{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5a996f09",
   "metadata": {},
   "outputs": [],
   "source": [
    "# importing libaries\n",
    "\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "21e06a8a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define the LSTM model\n",
    "class LSTM(nn.Module):\n",
    "    def __init__(self, input_size, hidden_size, output_size):\n",
    "        super(LSTM, self).__init__()\n",
    "\n",
    "        self.hidden_size = hidden_size\n",
    "\n",
    "        self.lstm = nn.LSTM(input_size, hidden_size, batch_first=True)\n",
    "        self.fc = nn.Linear(hidden_size, output_size)\n",
    "\n",
    "    def forward(self, x, hidden):\n",
    "        output, hidden = self.lstm(x, hidden)\n",
    "        output = self.fc(output)\n",
    "        return output, hidden\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7b7a22b4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Toy problem data\n",
    "input_size = 256  # number of columns in a dataset\n",
    "hidden_size = 32  # number of neurons\n",
    "output_size = 256  \n",
    "sequence_length = 160  # number of sequences/ number of rows\n",
    "batch_size = 1\n",
    "num_epochs = 30000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "b6f89e2d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the .mat file\n",
    "v_data = scipy.io.loadmat('v.mat')\n",
    "h_data = scipy.io.loadmat('h.mat')\n",
    "x_data = scipy.io.loadmat('x.mat')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "4189a364",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = x_data['X']\n",
    "u = h_data['h']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6b9bfc35",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x7f69c4145790>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Set random seed for reproducibility\n",
    "torch.manual_seed(42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "e49c1493",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test data shape (256,)\n",
      "input data shape (160, 256)\n",
      "Target data shape (160, 256)\n"
     ]
    }
   ],
   "source": [
    "input_data = u[0:160,:]\n",
    "target_data = u[1:161, :]\n",
    "\n",
    "test_data = u[160, :]\n",
    "#test_target = u[161:201, :]\n",
    "\n",
    "print(\"test data shape\", test_data.shape)\n",
    "#print(\"test target shape\", test_target.shape)\n",
    "\n",
    "print(\"input data shape\",input_data.shape)\n",
    "print(\"Target data shape\",target_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "7f382fd7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "input tensor shape torch.Size([1, 160, 256])\n",
      "Target tensor shape torch.Size([1, 160, 256])\n"
     ]
    }
   ],
   "source": [
    "# Convert data to tensors\n",
    "input_tensor = torch.tensor(input_data).view(batch_size, sequence_length, input_size).float()\n",
    "target_tensor = torch.tensor(target_data).view(batch_size, sequence_length, output_size).float()\n",
    "\n",
    "print(\"input tensor shape\",input_tensor.shape)\n",
    "print(\"Target tensor shape\",target_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "040679f2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Convert test data to tensors\n",
    "test_tensor = torch.tensor(test_data).view(batch_size, 1, input_size).float()\n",
    "#test_target_tensor = torch.tensor(test_target).view(batch_size, 40, output_size).float()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "b5dc1b21",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 10/30000, Loss: 0.17706659\n",
      "Epoch: 20/30000, Loss: 0.04944223\n",
      "Epoch: 30/30000, Loss: 0.03826120\n",
      "Epoch: 40/30000, Loss: 0.03608983\n",
      "Epoch: 50/30000, Loss: 0.03149891\n",
      "Epoch: 60/30000, Loss: 0.03100103\n",
      "Epoch: 70/30000, Loss: 0.03076473\n",
      "Epoch: 80/30000, Loss: 0.03058243\n",
      "Epoch: 90/30000, Loss: 0.03055021\n",
      "Epoch: 100/30000, Loss: 0.03016698\n",
      "Epoch: 110/30000, Loss: 0.02829106\n",
      "Epoch: 120/30000, Loss: 0.02481548\n",
      "Epoch: 130/30000, Loss: 0.02091661\n",
      "Epoch: 140/30000, Loss: 0.01758108\n",
      "Epoch: 150/30000, Loss: 0.01504118\n",
      "Epoch: 160/30000, Loss: 0.01308300\n",
      "Epoch: 170/30000, Loss: 0.01153052\n",
      "Epoch: 180/30000, Loss: 0.01026766\n",
      "Epoch: 190/30000, Loss: 0.00921789\n",
      "Epoch: 200/30000, Loss: 0.00832881\n",
      "Epoch: 210/30000, Loss: 0.00756419\n",
      "Epoch: 220/30000, Loss: 0.00689842\n",
      "Epoch: 230/30000, Loss: 0.00631265\n",
      "Epoch: 240/30000, Loss: 0.00579174\n",
      "Epoch: 250/30000, Loss: 0.00531701\n",
      "Epoch: 260/30000, Loss: 0.00481365\n",
      "Epoch: 270/30000, Loss: 0.00390480\n",
      "Epoch: 280/30000, Loss: 0.00243327\n",
      "Epoch: 290/30000, Loss: 0.00137593\n",
      "Epoch: 300/30000, Loss: 0.00096824\n",
      "Epoch: 310/30000, Loss: 0.00082747\n",
      "Epoch: 320/30000, Loss: 0.00076151\n",
      "Epoch: 330/30000, Loss: 0.00076168\n",
      "Epoch: 340/30000, Loss: 0.00076597\n",
      "Epoch: 350/30000, Loss: 0.00071739\n",
      "Epoch: 360/30000, Loss: 0.00068018\n",
      "Epoch: 370/30000, Loss: 0.00065403\n",
      "Epoch: 380/30000, Loss: 0.00063759\n",
      "Epoch: 390/30000, Loss: 0.00062010\n",
      "Epoch: 400/30000, Loss: 0.00060325\n",
      "Epoch: 410/30000, Loss: 0.00058731\n",
      "Epoch: 420/30000, Loss: 0.00058422\n",
      "Epoch: 430/30000, Loss: 0.00059469\n",
      "Epoch: 440/30000, Loss: 0.00056611\n",
      "Epoch: 450/30000, Loss: 0.00053405\n",
      "Epoch: 460/30000, Loss: 0.00051631\n",
      "Epoch: 470/30000, Loss: 0.00050400\n",
      "Epoch: 480/30000, Loss: 0.00049114\n",
      "Epoch: 490/30000, Loss: 0.00047944\n",
      "Epoch: 500/30000, Loss: 0.00046827\n",
      "Epoch: 510/30000, Loss: 0.00045764\n",
      "Epoch: 520/30000, Loss: 0.00044765\n",
      "Epoch: 530/30000, Loss: 0.00043814\n",
      "Epoch: 540/30000, Loss: 0.00042914\n",
      "Epoch: 550/30000, Loss: 0.00042074\n",
      "Epoch: 560/30000, Loss: 0.00041273\n",
      "Epoch: 570/30000, Loss: 0.00040517\n",
      "Epoch: 580/30000, Loss: 0.00039849\n",
      "Epoch: 590/30000, Loss: 0.00046231\n",
      "Epoch: 600/30000, Loss: 0.00038595\n",
      "Epoch: 610/30000, Loss: 0.00038030\n",
      "Epoch: 620/30000, Loss: 0.00037552\n",
      "Epoch: 630/30000, Loss: 0.00036942\n",
      "Epoch: 640/30000, Loss: 0.00036375\n",
      "Epoch: 650/30000, Loss: 0.00035908\n",
      "Epoch: 660/30000, Loss: 0.00035463\n",
      "Epoch: 670/30000, Loss: 0.00035041\n",
      "Epoch: 680/30000, Loss: 0.00034671\n",
      "Epoch: 690/30000, Loss: 0.00034283\n",
      "Epoch: 700/30000, Loss: 0.00034086\n",
      "Epoch: 710/30000, Loss: 0.00047228\n",
      "Epoch: 720/30000, Loss: 0.00036984\n",
      "Epoch: 730/30000, Loss: 0.00033221\n",
      "Epoch: 740/30000, Loss: 0.00032774\n",
      "Epoch: 750/30000, Loss: 0.00032484\n",
      "Epoch: 760/30000, Loss: 0.00032253\n",
      "Epoch: 770/30000, Loss: 0.00032008\n",
      "Epoch: 780/30000, Loss: 0.00031765\n",
      "Epoch: 790/30000, Loss: 0.00031635\n",
      "Epoch: 800/30000, Loss: 0.00031370\n",
      "Epoch: 810/30000, Loss: 0.00031185\n",
      "Epoch: 820/30000, Loss: 0.00033684\n",
      "Epoch: 830/30000, Loss: 0.00035166\n",
      "Epoch: 840/30000, Loss: 0.00034317\n",
      "Epoch: 850/30000, Loss: 0.00031236\n",
      "Epoch: 860/30000, Loss: 0.00030822\n",
      "Epoch: 870/30000, Loss: 0.00030293\n",
      "Epoch: 880/30000, Loss: 0.00030184\n",
      "Epoch: 890/30000, Loss: 0.00030012\n",
      "Epoch: 900/30000, Loss: 0.00029862\n",
      "Epoch: 910/30000, Loss: 0.00029766\n",
      "Epoch: 920/30000, Loss: 0.00029607\n",
      "Epoch: 930/30000, Loss: 0.00029595\n",
      "Epoch: 940/30000, Loss: 0.00029461\n",
      "Epoch: 950/30000, Loss: 0.00029277\n",
      "Epoch: 960/30000, Loss: 0.00031329\n",
      "Epoch: 970/30000, Loss: 0.00032998\n",
      "Epoch: 980/30000, Loss: 0.00032362\n",
      "Epoch: 990/30000, Loss: 0.00029408\n",
      "Epoch: 1000/30000, Loss: 0.00029421\n",
      "Epoch: 1010/30000, Loss: 0.00028935\n",
      "Epoch: 1020/30000, Loss: 0.00028771\n",
      "Epoch: 1030/30000, Loss: 0.00028679\n",
      "Epoch: 1040/30000, Loss: 0.00028629\n",
      "Epoch: 1050/30000, Loss: 0.00028532\n",
      "Epoch: 1060/30000, Loss: 0.00028426\n",
      "Epoch: 1070/30000, Loss: 0.00028427\n",
      "Epoch: 1080/30000, Loss: 0.00028344\n",
      "Epoch: 1090/30000, Loss: 0.00028628\n",
      "Epoch: 1100/30000, Loss: 0.00029048\n",
      "Epoch: 1110/30000, Loss: 0.00030561\n",
      "Epoch: 1120/30000, Loss: 0.00028136\n",
      "Epoch: 1130/30000, Loss: 0.00028069\n",
      "Epoch: 1140/30000, Loss: 0.00028079\n",
      "Epoch: 1150/30000, Loss: 0.00027981\n",
      "Epoch: 1160/30000, Loss: 0.00027868\n",
      "Epoch: 1170/30000, Loss: 0.00027795\n",
      "Epoch: 1180/30000, Loss: 0.00027735\n",
      "Epoch: 1190/30000, Loss: 0.00027745\n",
      "Epoch: 1200/30000, Loss: 0.00035472\n",
      "Epoch: 1210/30000, Loss: 0.00027764\n",
      "Epoch: 1220/30000, Loss: 0.00028000\n",
      "Epoch: 1230/30000, Loss: 0.00027819\n",
      "Epoch: 1240/30000, Loss: 0.00027545\n",
      "Epoch: 1250/30000, Loss: 0.00027451\n",
      "Epoch: 1260/30000, Loss: 0.00027443\n",
      "Epoch: 1270/30000, Loss: 0.00028070\n",
      "Epoch: 1280/30000, Loss: 0.00029826\n",
      "Epoch: 1290/30000, Loss: 0.00028472\n",
      "Epoch: 1300/30000, Loss: 0.00027660\n",
      "Epoch: 1310/30000, Loss: 0.00027107\n",
      "Epoch: 1320/30000, Loss: 0.00028057\n",
      "Epoch: 1330/30000, Loss: 0.00028000\n",
      "Epoch: 1340/30000, Loss: 0.00031212\n",
      "Epoch: 1350/30000, Loss: 0.00028472\n",
      "Epoch: 1360/30000, Loss: 0.00028295\n",
      "Epoch: 1370/30000, Loss: 0.00027369\n",
      "Epoch: 1380/30000, Loss: 0.00026845\n",
      "Epoch: 1390/30000, Loss: 0.00026970\n",
      "Epoch: 1400/30000, Loss: 0.00031917\n",
      "Epoch: 1410/30000, Loss: 0.00029907\n",
      "Epoch: 1420/30000, Loss: 0.00027627\n",
      "Epoch: 1430/30000, Loss: 0.00027035\n",
      "Epoch: 1440/30000, Loss: 0.00026584\n",
      "Epoch: 1450/30000, Loss: 0.00026682\n",
      "Epoch: 1460/30000, Loss: 0.00030607\n",
      "Epoch: 1470/30000, Loss: 0.00028958\n",
      "Epoch: 1480/30000, Loss: 0.00027066\n",
      "Epoch: 1490/30000, Loss: 0.00026729\n",
      "Epoch: 1500/30000, Loss: 0.00026388\n",
      "Epoch: 1510/30000, Loss: 0.00026516\n",
      "Epoch: 1520/30000, Loss: 0.00028757\n",
      "Epoch: 1530/30000, Loss: 0.00026420\n",
      "Epoch: 1540/30000, Loss: 0.00028847\n",
      "Epoch: 1550/30000, Loss: 0.00027045\n",
      "Epoch: 1560/30000, Loss: 0.00026450\n",
      "Epoch: 1570/30000, Loss: 0.00026081\n",
      "Epoch: 1580/30000, Loss: 0.00026682\n",
      "Epoch: 1590/30000, Loss: 0.00032174\n",
      "Epoch: 1600/30000, Loss: 0.00029336\n",
      "Epoch: 1610/30000, Loss: 0.00026888\n",
      "Epoch: 1620/30000, Loss: 0.00026384\n",
      "Epoch: 1630/30000, Loss: 0.00025980\n",
      "Epoch: 1640/30000, Loss: 0.00026270\n",
      "Epoch: 1650/30000, Loss: 0.00028895\n",
      "Epoch: 1660/30000, Loss: 0.00026043\n",
      "Epoch: 1670/30000, Loss: 0.00027107\n",
      "Epoch: 1680/30000, Loss: 0.00026522\n",
      "Epoch: 1690/30000, Loss: 0.00025791\n",
      "Epoch: 1700/30000, Loss: 0.00025924\n",
      "Epoch: 1710/30000, Loss: 0.00027624\n",
      "Epoch: 1720/30000, Loss: 0.00026815\n",
      "Epoch: 1730/30000, Loss: 0.00027505\n",
      "Epoch: 1740/30000, Loss: 0.00026164\n",
      "Epoch: 1750/30000, Loss: 0.00025683\n",
      "Epoch: 1760/30000, Loss: 0.00025401\n",
      "Epoch: 1770/30000, Loss: 0.00025333\n",
      "Epoch: 1780/30000, Loss: 0.00027255\n",
      "Epoch: 1790/30000, Loss: 0.00028909\n",
      "Epoch: 1800/30000, Loss: 0.00025604\n",
      "Epoch: 1810/30000, Loss: 0.00025594\n",
      "Epoch: 1820/30000, Loss: 0.00025334\n",
      "Epoch: 1830/30000, Loss: 0.00025216\n",
      "Epoch: 1840/30000, Loss: 0.00025154\n",
      "Epoch: 1850/30000, Loss: 0.00025086\n",
      "Epoch: 1860/30000, Loss: 0.00025104\n",
      "Epoch: 1870/30000, Loss: 0.00025153\n",
      "Epoch: 1880/30000, Loss: 0.00025289\n",
      "Epoch: 1890/30000, Loss: 0.00025103\n",
      "Epoch: 1900/30000, Loss: 0.00025010\n",
      "Epoch: 1910/30000, Loss: 0.00033039\n",
      "Epoch: 1920/30000, Loss: 0.00035289\n",
      "Epoch: 1930/30000, Loss: 0.00028277\n",
      "Epoch: 1940/30000, Loss: 0.00025769\n",
      "Epoch: 1950/30000, Loss: 0.00025020\n",
      "Epoch: 1960/30000, Loss: 0.00024785\n",
      "Epoch: 1970/30000, Loss: 0.00024674\n",
      "Epoch: 1980/30000, Loss: 0.00024634\n",
      "Epoch: 1990/30000, Loss: 0.00024592\n",
      "Epoch: 2000/30000, Loss: 0.00024500\n",
      "Epoch: 2010/30000, Loss: 0.00024591\n",
      "Epoch: 2020/30000, Loss: 0.00024711\n",
      "Epoch: 2030/30000, Loss: 0.00024481\n",
      "Epoch: 2040/30000, Loss: 0.00038422\n",
      "Epoch: 2050/30000, Loss: 0.00027005\n",
      "Epoch: 2060/30000, Loss: 0.00028618\n",
      "Epoch: 2070/30000, Loss: 0.00024617\n",
      "Epoch: 2080/30000, Loss: 0.00024853\n",
      "Epoch: 2090/30000, Loss: 0.00024232\n",
      "Epoch: 2100/30000, Loss: 0.00024107\n",
      "Epoch: 2110/30000, Loss: 0.00024082\n",
      "Epoch: 2120/30000, Loss: 0.00024050\n",
      "Epoch: 2130/30000, Loss: 0.00023961\n",
      "Epoch: 2140/30000, Loss: 0.00023942\n",
      "Epoch: 2150/30000, Loss: 0.00023949\n",
      "Epoch: 2160/30000, Loss: 0.00023993\n",
      "Epoch: 2170/30000, Loss: 0.00023967\n",
      "Epoch: 2180/30000, Loss: 0.00023951\n",
      "Epoch: 2190/30000, Loss: 0.00023859\n",
      "Epoch: 2200/30000, Loss: 0.00025706\n",
      "Epoch: 2210/30000, Loss: 0.00029567\n",
      "Epoch: 2220/30000, Loss: 0.00031561\n",
      "Epoch: 2230/30000, Loss: 0.00024874\n",
      "Epoch: 2240/30000, Loss: 0.00023824\n",
      "Epoch: 2250/30000, Loss: 0.00023797\n",
      "Epoch: 2260/30000, Loss: 0.00023468\n",
      "Epoch: 2270/30000, Loss: 0.00023439\n",
      "Epoch: 2280/30000, Loss: 0.00023394\n",
      "Epoch: 2290/30000, Loss: 0.00023308\n",
      "Epoch: 2300/30000, Loss: 0.00023199\n",
      "Epoch: 2310/30000, Loss: 0.00023502\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 2320/30000, Loss: 0.00023493\n",
      "Epoch: 2330/30000, Loss: 0.00023256\n",
      "Epoch: 2340/30000, Loss: 0.00023050\n",
      "Epoch: 2350/30000, Loss: 0.00023062\n",
      "Epoch: 2360/30000, Loss: 0.00023111\n",
      "Epoch: 2370/30000, Loss: 0.00023902\n",
      "Epoch: 2380/30000, Loss: 0.00041539\n",
      "Epoch: 2390/30000, Loss: 0.00025054\n",
      "Epoch: 2400/30000, Loss: 0.00025071\n",
      "Epoch: 2410/30000, Loss: 0.00023557\n",
      "Epoch: 2420/30000, Loss: 0.00022752\n",
      "Epoch: 2430/30000, Loss: 0.00022690\n",
      "Epoch: 2440/30000, Loss: 0.00022570\n",
      "Epoch: 2450/30000, Loss: 0.00022543\n",
      "Epoch: 2460/30000, Loss: 0.00022557\n",
      "Epoch: 2470/30000, Loss: 0.00022642\n",
      "Epoch: 2480/30000, Loss: 0.00022697\n",
      "Epoch: 2490/30000, Loss: 0.00022783\n",
      "Epoch: 2500/30000, Loss: 0.00022640\n",
      "Epoch: 2510/30000, Loss: 0.00022591\n",
      "Epoch: 2520/30000, Loss: 0.00022445\n",
      "Epoch: 2530/30000, Loss: 0.00022310\n",
      "Epoch: 2540/30000, Loss: 0.00042690\n",
      "Epoch: 2550/30000, Loss: 0.00026674\n",
      "Epoch: 2560/30000, Loss: 0.00022820\n",
      "Epoch: 2570/30000, Loss: 0.00022278\n",
      "Epoch: 2580/30000, Loss: 0.00022070\n",
      "Epoch: 2590/30000, Loss: 0.00021975\n",
      "Epoch: 2600/30000, Loss: 0.00021880\n",
      "Epoch: 2610/30000, Loss: 0.00021953\n",
      "Epoch: 2620/30000, Loss: 0.00021963\n",
      "Epoch: 2630/30000, Loss: 0.00022034\n",
      "Epoch: 2640/30000, Loss: 0.00021948\n",
      "Epoch: 2650/30000, Loss: 0.00021896\n",
      "Epoch: 2660/30000, Loss: 0.00021754\n",
      "Epoch: 2670/30000, Loss: 0.00021741\n",
      "Epoch: 2680/30000, Loss: 0.00021828\n",
      "Epoch: 2690/30000, Loss: 0.00021793\n",
      "Epoch: 2700/30000, Loss: 0.00028040\n",
      "Epoch: 2710/30000, Loss: 0.00042961\n",
      "Epoch: 2720/30000, Loss: 0.00027687\n",
      "Epoch: 2730/30000, Loss: 0.00022185\n",
      "Epoch: 2740/30000, Loss: 0.00021462\n",
      "Epoch: 2750/30000, Loss: 0.00021345\n",
      "Epoch: 2760/30000, Loss: 0.00021333\n",
      "Epoch: 2770/30000, Loss: 0.00021338\n",
      "Epoch: 2780/30000, Loss: 0.00021254\n",
      "Epoch: 2790/30000, Loss: 0.00021155\n",
      "Epoch: 2800/30000, Loss: 0.00021391\n",
      "Epoch: 2810/30000, Loss: 0.00021168\n",
      "Epoch: 2820/30000, Loss: 0.00021147\n",
      "Epoch: 2830/30000, Loss: 0.00021123\n",
      "Epoch: 2840/30000, Loss: 0.00021070\n",
      "Epoch: 2850/30000, Loss: 0.00021039\n",
      "Epoch: 2860/30000, Loss: 0.00021069\n",
      "Epoch: 2870/30000, Loss: 0.00021122\n",
      "Epoch: 2880/30000, Loss: 0.00031927\n",
      "Epoch: 2890/30000, Loss: 0.00030173\n",
      "Epoch: 2900/30000, Loss: 0.00021453\n",
      "Epoch: 2910/30000, Loss: 0.00022038\n",
      "Epoch: 2920/30000, Loss: 0.00020654\n",
      "Epoch: 2930/30000, Loss: 0.00020588\n",
      "Epoch: 2940/30000, Loss: 0.00020465\n",
      "Epoch: 2950/30000, Loss: 0.00020482\n",
      "Epoch: 2960/30000, Loss: 0.00020498\n",
      "Epoch: 2970/30000, Loss: 0.00020393\n",
      "Epoch: 2980/30000, Loss: 0.00020427\n",
      "Epoch: 2990/30000, Loss: 0.00020361\n",
      "Epoch: 3000/30000, Loss: 0.00020739\n",
      "Epoch: 3010/30000, Loss: 0.00034363\n",
      "Epoch: 3020/30000, Loss: 0.00036518\n",
      "Epoch: 3030/30000, Loss: 0.00025788\n",
      "Epoch: 3040/30000, Loss: 0.00022028\n",
      "Epoch: 3050/30000, Loss: 0.00020154\n",
      "Epoch: 3060/30000, Loss: 0.00020180\n",
      "Epoch: 3070/30000, Loss: 0.00020113\n",
      "Epoch: 3080/30000, Loss: 0.00020035\n",
      "Epoch: 3090/30000, Loss: 0.00019893\n",
      "Epoch: 3100/30000, Loss: 0.00019782\n",
      "Epoch: 3110/30000, Loss: 0.00019801\n",
      "Epoch: 3120/30000, Loss: 0.00019901\n",
      "Epoch: 3130/30000, Loss: 0.00020187\n",
      "Epoch: 3140/30000, Loss: 0.00020248\n",
      "Epoch: 3150/30000, Loss: 0.00020058\n",
      "Epoch: 3160/30000, Loss: 0.00020195\n",
      "Epoch: 3170/30000, Loss: 0.00021795\n",
      "Epoch: 3180/30000, Loss: 0.00028675\n",
      "Epoch: 3190/30000, Loss: 0.00024984\n",
      "Epoch: 3200/30000, Loss: 0.00022007\n",
      "Epoch: 3210/30000, Loss: 0.00020568\n",
      "Epoch: 3220/30000, Loss: 0.00019390\n",
      "Epoch: 3230/30000, Loss: 0.00019415\n",
      "Epoch: 3240/30000, Loss: 0.00019257\n",
      "Epoch: 3250/30000, Loss: 0.00019151\n",
      "Epoch: 3260/30000, Loss: 0.00019187\n",
      "Epoch: 3270/30000, Loss: 0.00019194\n",
      "Epoch: 3280/30000, Loss: 0.00019112\n",
      "Epoch: 3290/30000, Loss: 0.00019687\n",
      "Epoch: 3300/30000, Loss: 0.00019585\n",
      "Epoch: 3310/30000, Loss: 0.00019551\n",
      "Epoch: 3320/30000, Loss: 0.00019523\n",
      "Epoch: 3330/30000, Loss: 0.00020011\n",
      "Epoch: 3340/30000, Loss: 0.00048200\n",
      "Epoch: 3350/30000, Loss: 0.00020861\n",
      "Epoch: 3360/30000, Loss: 0.00022081\n",
      "Epoch: 3370/30000, Loss: 0.00019158\n",
      "Epoch: 3380/30000, Loss: 0.00019206\n",
      "Epoch: 3390/30000, Loss: 0.00018638\n",
      "Epoch: 3400/30000, Loss: 0.00018558\n",
      "Epoch: 3410/30000, Loss: 0.00018477\n",
      "Epoch: 3420/30000, Loss: 0.00018725\n",
      "Epoch: 3430/30000, Loss: 0.00018735\n",
      "Epoch: 3440/30000, Loss: 0.00018742\n",
      "Epoch: 3450/30000, Loss: 0.00018808\n",
      "Epoch: 3460/30000, Loss: 0.00018850\n",
      "Epoch: 3470/30000, Loss: 0.00024760\n",
      "Epoch: 3480/30000, Loss: 0.00021810\n",
      "Epoch: 3490/30000, Loss: 0.00021643\n",
      "Epoch: 3500/30000, Loss: 0.00019266\n",
      "Epoch: 3510/30000, Loss: 0.00018803\n",
      "Epoch: 3520/30000, Loss: 0.00018377\n",
      "Epoch: 3530/30000, Loss: 0.00018374\n",
      "Epoch: 3540/30000, Loss: 0.00018073\n",
      "Epoch: 3550/30000, Loss: 0.00018112\n",
      "Epoch: 3560/30000, Loss: 0.00018363\n",
      "Epoch: 3570/30000, Loss: 0.00018191\n",
      "Epoch: 3580/30000, Loss: 0.00018171\n",
      "Epoch: 3590/30000, Loss: 0.00018391\n",
      "Epoch: 3600/30000, Loss: 0.00043014\n",
      "Epoch: 3610/30000, Loss: 0.00025512\n",
      "Epoch: 3620/30000, Loss: 0.00021267\n",
      "Epoch: 3630/30000, Loss: 0.00018243\n",
      "Epoch: 3640/30000, Loss: 0.00017762\n",
      "Epoch: 3650/30000, Loss: 0.00017659\n",
      "Epoch: 3660/30000, Loss: 0.00017634\n",
      "Epoch: 3670/30000, Loss: 0.00017790\n",
      "Epoch: 3680/30000, Loss: 0.00017601\n",
      "Epoch: 3690/30000, Loss: 0.00017584\n",
      "Epoch: 3700/30000, Loss: 0.00018037\n",
      "Epoch: 3710/30000, Loss: 0.00018264\n",
      "Epoch: 3720/30000, Loss: 0.00020289\n",
      "Epoch: 3730/30000, Loss: 0.00030313\n",
      "Epoch: 3740/30000, Loss: 0.00019495\n",
      "Epoch: 3750/30000, Loss: 0.00019560\n",
      "Epoch: 3760/30000, Loss: 0.00017737\n",
      "Epoch: 3770/30000, Loss: 0.00017233\n",
      "Epoch: 3780/30000, Loss: 0.00017203\n",
      "Epoch: 3790/30000, Loss: 0.00017155\n",
      "Epoch: 3800/30000, Loss: 0.00017091\n",
      "Epoch: 3810/30000, Loss: 0.00017133\n",
      "Epoch: 3820/30000, Loss: 0.00016943\n",
      "Epoch: 3830/30000, Loss: 0.00018843\n",
      "Epoch: 3840/30000, Loss: 0.00038930\n",
      "Epoch: 3850/30000, Loss: 0.00018519\n",
      "Epoch: 3860/30000, Loss: 0.00019529\n",
      "Epoch: 3870/30000, Loss: 0.00017442\n",
      "Epoch: 3880/30000, Loss: 0.00016705\n",
      "Epoch: 3890/30000, Loss: 0.00016691\n",
      "Epoch: 3900/30000, Loss: 0.00016964\n",
      "Epoch: 3910/30000, Loss: 0.00016849\n",
      "Epoch: 3920/30000, Loss: 0.00016960\n",
      "Epoch: 3930/30000, Loss: 0.00016800\n",
      "Epoch: 3940/30000, Loss: 0.00016747\n",
      "Epoch: 3950/30000, Loss: 0.00023117\n",
      "Epoch: 3960/30000, Loss: 0.00020528\n",
      "Epoch: 3970/30000, Loss: 0.00020350\n",
      "Epoch: 3980/30000, Loss: 0.00017642\n",
      "Epoch: 3990/30000, Loss: 0.00016941\n",
      "Epoch: 4000/30000, Loss: 0.00016222\n",
      "Epoch: 4010/30000, Loss: 0.00016330\n",
      "Epoch: 4020/30000, Loss: 0.00016166\n",
      "Epoch: 4030/30000, Loss: 0.00016101\n",
      "Epoch: 4040/30000, Loss: 0.00016582\n",
      "Epoch: 4050/30000, Loss: 0.00016579\n",
      "Epoch: 4060/30000, Loss: 0.00016712\n",
      "Epoch: 4070/30000, Loss: 0.00016990\n",
      "Epoch: 4080/30000, Loss: 0.00041087\n",
      "Epoch: 4090/30000, Loss: 0.00025089\n",
      "Epoch: 4100/30000, Loss: 0.00016892\n",
      "Epoch: 4110/30000, Loss: 0.00016999\n",
      "Epoch: 4120/30000, Loss: 0.00016104\n",
      "Epoch: 4130/30000, Loss: 0.00015773\n",
      "Epoch: 4140/30000, Loss: 0.00015763\n",
      "Epoch: 4150/30000, Loss: 0.00015826\n",
      "Epoch: 4160/30000, Loss: 0.00015809\n",
      "Epoch: 4170/30000, Loss: 0.00015591\n",
      "Epoch: 4180/30000, Loss: 0.00015713\n",
      "Epoch: 4190/30000, Loss: 0.00018783\n",
      "Epoch: 4200/30000, Loss: 0.00029052\n",
      "Epoch: 4210/30000, Loss: 0.00021195\n",
      "Epoch: 4220/30000, Loss: 0.00016571\n",
      "Epoch: 4230/30000, Loss: 0.00015548\n",
      "Epoch: 4240/30000, Loss: 0.00015518\n",
      "Epoch: 4250/30000, Loss: 0.00015388\n",
      "Epoch: 4260/30000, Loss: 0.00015250\n",
      "Epoch: 4270/30000, Loss: 0.00015413\n",
      "Epoch: 4280/30000, Loss: 0.00015617\n",
      "Epoch: 4290/30000, Loss: 0.00015689\n",
      "Epoch: 4300/30000, Loss: 0.00015594\n",
      "Epoch: 4310/30000, Loss: 0.00015505\n",
      "Epoch: 4320/30000, Loss: 0.00025278\n",
      "Epoch: 4330/30000, Loss: 0.00023709\n",
      "Epoch: 4340/30000, Loss: 0.00017012\n",
      "Epoch: 4350/30000, Loss: 0.00016913\n",
      "Epoch: 4360/30000, Loss: 0.00015229\n",
      "Epoch: 4370/30000, Loss: 0.00014751\n",
      "Epoch: 4380/30000, Loss: 0.00014858\n",
      "Epoch: 4390/30000, Loss: 0.00014841\n",
      "Epoch: 4400/30000, Loss: 0.00014741\n",
      "Epoch: 4410/30000, Loss: 0.00014688\n",
      "Epoch: 4420/30000, Loss: 0.00015145\n",
      "Epoch: 4430/30000, Loss: 0.00015316\n",
      "Epoch: 4440/30000, Loss: 0.00015108\n",
      "Epoch: 4450/30000, Loss: 0.00018112\n",
      "Epoch: 4460/30000, Loss: 0.00025068\n",
      "Epoch: 4470/30000, Loss: 0.00019502\n",
      "Epoch: 4480/30000, Loss: 0.00016244\n",
      "Epoch: 4490/30000, Loss: 0.00014475\n",
      "Epoch: 4500/30000, Loss: 0.00014329\n",
      "Epoch: 4510/30000, Loss: 0.00014323\n",
      "Epoch: 4520/30000, Loss: 0.00014298\n",
      "Epoch: 4530/30000, Loss: 0.00014359\n",
      "Epoch: 4540/30000, Loss: 0.00014475\n",
      "Epoch: 4550/30000, Loss: 0.00014403\n",
      "Epoch: 4560/30000, Loss: 0.00014531\n",
      "Epoch: 4570/30000, Loss: 0.00016227\n",
      "Epoch: 4580/30000, Loss: 0.00045876\n",
      "Epoch: 4590/30000, Loss: 0.00015676\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 4600/30000, Loss: 0.00017187\n",
      "Epoch: 4610/30000, Loss: 0.00014230\n",
      "Epoch: 4620/30000, Loss: 0.00013866\n",
      "Epoch: 4630/30000, Loss: 0.00014027\n",
      "Epoch: 4640/30000, Loss: 0.00014047\n",
      "Epoch: 4650/30000, Loss: 0.00014196\n",
      "Epoch: 4660/30000, Loss: 0.00013998\n",
      "Epoch: 4670/30000, Loss: 0.00014278\n",
      "Epoch: 4680/30000, Loss: 0.00013946\n",
      "Epoch: 4690/30000, Loss: 0.00013907\n",
      "Epoch: 4700/30000, Loss: 0.00014417\n",
      "Epoch: 4710/30000, Loss: 0.00048909\n",
      "Epoch: 4720/30000, Loss: 0.00023746\n",
      "Epoch: 4730/30000, Loss: 0.00018814\n",
      "Epoch: 4740/30000, Loss: 0.00013825\n",
      "Epoch: 4750/30000, Loss: 0.00013937\n",
      "Epoch: 4760/30000, Loss: 0.00013290\n",
      "Epoch: 4770/30000, Loss: 0.00013349\n",
      "Epoch: 4780/30000, Loss: 0.00013442\n",
      "Epoch: 4790/30000, Loss: 0.00013761\n",
      "Epoch: 4800/30000, Loss: 0.00013550\n",
      "Epoch: 4810/30000, Loss: 0.00013688\n",
      "Epoch: 4820/30000, Loss: 0.00014134\n",
      "Epoch: 4830/30000, Loss: 0.00014404\n",
      "Epoch: 4840/30000, Loss: 0.00018392\n",
      "Epoch: 4850/30000, Loss: 0.00018478\n",
      "Epoch: 4860/30000, Loss: 0.00013808\n",
      "Epoch: 4870/30000, Loss: 0.00013371\n",
      "Epoch: 4880/30000, Loss: 0.00013370\n",
      "Epoch: 4890/30000, Loss: 0.00013053\n",
      "Epoch: 4900/30000, Loss: 0.00012908\n",
      "Epoch: 4910/30000, Loss: 0.00012942\n",
      "Epoch: 4920/30000, Loss: 0.00013195\n",
      "Epoch: 4930/30000, Loss: 0.00017095\n",
      "Epoch: 4940/30000, Loss: 0.00030398\n",
      "Epoch: 4950/30000, Loss: 0.00020373\n",
      "Epoch: 4960/30000, Loss: 0.00013408\n",
      "Epoch: 4970/30000, Loss: 0.00013550\n",
      "Epoch: 4980/30000, Loss: 0.00012587\n",
      "Epoch: 4990/30000, Loss: 0.00012557\n",
      "Epoch: 5000/30000, Loss: 0.00012423\n",
      "Epoch: 5010/30000, Loss: 0.00012513\n",
      "Epoch: 5020/30000, Loss: 0.00012629\n",
      "Epoch: 5030/30000, Loss: 0.00013334\n",
      "Epoch: 5040/30000, Loss: 0.00012745\n",
      "Epoch: 5050/30000, Loss: 0.00012705\n",
      "Epoch: 5060/30000, Loss: 0.00019884\n",
      "Epoch: 5070/30000, Loss: 0.00012177\n",
      "Epoch: 5080/30000, Loss: 0.00011801\n",
      "Epoch: 5090/30000, Loss: 0.00011711\n",
      "Epoch: 5100/30000, Loss: 0.00011709\n",
      "Epoch: 5110/30000, Loss: 0.00011441\n",
      "Epoch: 5120/30000, Loss: 0.00011866\n",
      "Epoch: 5130/30000, Loss: 0.00012372\n",
      "Epoch: 5140/30000, Loss: 0.00022734\n",
      "Epoch: 5150/30000, Loss: 0.00014369\n",
      "Epoch: 5160/30000, Loss: 0.00013557\n",
      "Epoch: 5170/30000, Loss: 0.00011887\n",
      "Epoch: 5180/30000, Loss: 0.00011129\n",
      "Epoch: 5190/30000, Loss: 0.00010876\n",
      "Epoch: 5200/30000, Loss: 0.00011180\n",
      "Epoch: 5210/30000, Loss: 0.00011184\n",
      "Epoch: 5220/30000, Loss: 0.00011003\n",
      "Epoch: 5230/30000, Loss: 0.00010904\n",
      "Epoch: 5240/30000, Loss: 0.00013154\n",
      "Epoch: 5250/30000, Loss: 0.00040330\n",
      "Epoch: 5260/30000, Loss: 0.00016870\n",
      "Epoch: 5270/30000, Loss: 0.00011777\n",
      "Epoch: 5280/30000, Loss: 0.00011888\n",
      "Epoch: 5290/30000, Loss: 0.00010483\n",
      "Epoch: 5300/30000, Loss: 0.00010635\n",
      "Epoch: 5310/30000, Loss: 0.00010465\n",
      "Epoch: 5320/30000, Loss: 0.00010576\n",
      "Epoch: 5330/30000, Loss: 0.00010734\n",
      "Epoch: 5340/30000, Loss: 0.00010894\n",
      "Epoch: 5350/30000, Loss: 0.00010730\n",
      "Epoch: 5360/30000, Loss: 0.00010686\n",
      "Epoch: 5370/30000, Loss: 0.00010921\n",
      "Epoch: 5380/30000, Loss: 0.00010839\n",
      "Epoch: 5390/30000, Loss: 0.00011400\n",
      "Epoch: 5400/30000, Loss: 0.00033092\n",
      "Epoch: 5410/30000, Loss: 0.00021938\n",
      "Epoch: 5420/30000, Loss: 0.00011698\n",
      "Epoch: 5430/30000, Loss: 0.00010883\n",
      "Epoch: 5440/30000, Loss: 0.00010395\n",
      "Epoch: 5450/30000, Loss: 0.00009934\n",
      "Epoch: 5460/30000, Loss: 0.00009809\n",
      "Epoch: 5470/30000, Loss: 0.00010002\n",
      "Epoch: 5480/30000, Loss: 0.00009979\n",
      "Epoch: 5490/30000, Loss: 0.00010519\n",
      "Epoch: 5500/30000, Loss: 0.00010450\n",
      "Epoch: 5510/30000, Loss: 0.00010461\n",
      "Epoch: 5520/30000, Loss: 0.00010810\n",
      "Epoch: 5530/30000, Loss: 0.00011849\n",
      "Epoch: 5540/30000, Loss: 0.00047077\n",
      "Epoch: 5550/30000, Loss: 0.00014290\n",
      "Epoch: 5560/30000, Loss: 0.00010770\n",
      "Epoch: 5570/30000, Loss: 0.00010756\n",
      "Epoch: 5580/30000, Loss: 0.00009658\n",
      "Epoch: 5590/30000, Loss: 0.00009610\n",
      "Epoch: 5600/30000, Loss: 0.00009520\n",
      "Epoch: 5610/30000, Loss: 0.00009654\n",
      "Epoch: 5620/30000, Loss: 0.00009704\n",
      "Epoch: 5630/30000, Loss: 0.00010027\n",
      "Epoch: 5640/30000, Loss: 0.00009803\n",
      "Epoch: 5650/30000, Loss: 0.00009874\n",
      "Epoch: 5660/30000, Loss: 0.00010112\n",
      "Epoch: 5670/30000, Loss: 0.00010395\n",
      "Epoch: 5680/30000, Loss: 0.00010680\n",
      "Epoch: 5690/30000, Loss: 0.00010656\n",
      "Epoch: 5700/30000, Loss: 0.00024795\n",
      "Epoch: 5710/30000, Loss: 0.00013032\n",
      "Epoch: 5720/30000, Loss: 0.00011680\n",
      "Epoch: 5730/30000, Loss: 0.00010066\n",
      "Epoch: 5740/30000, Loss: 0.00009293\n",
      "Epoch: 5750/30000, Loss: 0.00009057\n",
      "Epoch: 5760/30000, Loss: 0.00009001\n",
      "Epoch: 5770/30000, Loss: 0.00009100\n",
      "Epoch: 5780/30000, Loss: 0.00009343\n",
      "Epoch: 5790/30000, Loss: 0.00010410\n",
      "Epoch: 5800/30000, Loss: 0.00025651\n",
      "Epoch: 5810/30000, Loss: 0.00012692\n",
      "Epoch: 5820/30000, Loss: 0.00010389\n",
      "Epoch: 5830/30000, Loss: 0.00009504\n",
      "Epoch: 5840/30000, Loss: 0.00009029\n",
      "Epoch: 5850/30000, Loss: 0.00008843\n",
      "Epoch: 5860/30000, Loss: 0.00008838\n",
      "Epoch: 5870/30000, Loss: 0.00009167\n",
      "Epoch: 5880/30000, Loss: 0.00010547\n",
      "Epoch: 5890/30000, Loss: 0.00030082\n",
      "Epoch: 5900/30000, Loss: 0.00014815\n",
      "Epoch: 5910/30000, Loss: 0.00010698\n",
      "Epoch: 5920/30000, Loss: 0.00009394\n",
      "Epoch: 5930/30000, Loss: 0.00008807\n",
      "Epoch: 5940/30000, Loss: 0.00008648\n",
      "Epoch: 5950/30000, Loss: 0.00008800\n",
      "Epoch: 5960/30000, Loss: 0.00008738\n",
      "Epoch: 5970/30000, Loss: 0.00009707\n",
      "Epoch: 5980/30000, Loss: 0.00012447\n",
      "Epoch: 5990/30000, Loss: 0.00012096\n",
      "Epoch: 6000/30000, Loss: 0.00019503\n",
      "Epoch: 6010/30000, Loss: 0.00010961\n",
      "Epoch: 6020/30000, Loss: 0.00008741\n",
      "Epoch: 6030/30000, Loss: 0.00008497\n",
      "Epoch: 6040/30000, Loss: 0.00008390\n",
      "Epoch: 6050/30000, Loss: 0.00008429\n",
      "Epoch: 6060/30000, Loss: 0.00010275\n",
      "Epoch: 6070/30000, Loss: 0.00021856\n",
      "Epoch: 6080/30000, Loss: 0.00011866\n",
      "Epoch: 6090/30000, Loss: 0.00009727\n",
      "Epoch: 6100/30000, Loss: 0.00008762\n",
      "Epoch: 6110/30000, Loss: 0.00008688\n",
      "Epoch: 6120/30000, Loss: 0.00008556\n",
      "Epoch: 6130/30000, Loss: 0.00010599\n",
      "Epoch: 6140/30000, Loss: 0.00016495\n",
      "Epoch: 6150/30000, Loss: 0.00010767\n",
      "Epoch: 6160/30000, Loss: 0.00009085\n",
      "Epoch: 6170/30000, Loss: 0.00011721\n",
      "Epoch: 6180/30000, Loss: 0.00012058\n",
      "Epoch: 6190/30000, Loss: 0.00009058\n",
      "Epoch: 6200/30000, Loss: 0.00008541\n",
      "Epoch: 6210/30000, Loss: 0.00008100\n",
      "Epoch: 6220/30000, Loss: 0.00007999\n",
      "Epoch: 6230/30000, Loss: 0.00009595\n",
      "Epoch: 6240/30000, Loss: 0.00029996\n",
      "Epoch: 6250/30000, Loss: 0.00012640\n",
      "Epoch: 6260/30000, Loss: 0.00010165\n",
      "Epoch: 6270/30000, Loss: 0.00009118\n",
      "Epoch: 6280/30000, Loss: 0.00008435\n",
      "Epoch: 6290/30000, Loss: 0.00007926\n",
      "Epoch: 6300/30000, Loss: 0.00007859\n",
      "Epoch: 6310/30000, Loss: 0.00008090\n",
      "Epoch: 6320/30000, Loss: 0.00009915\n",
      "Epoch: 6330/30000, Loss: 0.00016250\n",
      "Epoch: 6340/30000, Loss: 0.00013038\n",
      "Epoch: 6350/30000, Loss: 0.00009534\n",
      "Epoch: 6360/30000, Loss: 0.00008832\n",
      "Epoch: 6370/30000, Loss: 0.00008377\n",
      "Epoch: 6380/30000, Loss: 0.00007749\n",
      "Epoch: 6390/30000, Loss: 0.00007920\n",
      "Epoch: 6400/30000, Loss: 0.00013303\n",
      "Epoch: 6410/30000, Loss: 0.00011350\n",
      "Epoch: 6420/30000, Loss: 0.00008874\n",
      "Epoch: 6430/30000, Loss: 0.00008376\n",
      "Epoch: 6440/30000, Loss: 0.00008502\n",
      "Epoch: 6450/30000, Loss: 0.00011701\n",
      "Epoch: 6460/30000, Loss: 0.00008369\n",
      "Epoch: 6470/30000, Loss: 0.00008101\n",
      "Epoch: 6480/30000, Loss: 0.00007656\n",
      "Epoch: 6490/30000, Loss: 0.00007722\n",
      "Epoch: 6500/30000, Loss: 0.00020302\n",
      "Epoch: 6510/30000, Loss: 0.00015969\n",
      "Epoch: 6520/30000, Loss: 0.00008814\n",
      "Epoch: 6530/30000, Loss: 0.00008588\n",
      "Epoch: 6540/30000, Loss: 0.00024552\n",
      "Epoch: 6550/30000, Loss: 0.00011897\n",
      "Epoch: 6560/30000, Loss: 0.00009961\n",
      "Epoch: 6570/30000, Loss: 0.00007985\n",
      "Epoch: 6580/30000, Loss: 0.00007352\n",
      "Epoch: 6590/30000, Loss: 0.00007415\n",
      "Epoch: 6600/30000, Loss: 0.00007348\n",
      "Epoch: 6610/30000, Loss: 0.00007854\n",
      "Epoch: 6620/30000, Loss: 0.00007903\n",
      "Epoch: 6630/30000, Loss: 0.00010776\n",
      "Epoch: 6640/30000, Loss: 0.00015197\n",
      "Epoch: 6650/30000, Loss: 0.00008259\n",
      "Epoch: 6660/30000, Loss: 0.00008648\n",
      "Epoch: 6670/30000, Loss: 0.00007986\n",
      "Epoch: 6680/30000, Loss: 0.00007485\n",
      "Epoch: 6690/30000, Loss: 0.00007627\n",
      "Epoch: 6700/30000, Loss: 0.00007700\n",
      "Epoch: 6710/30000, Loss: 0.00015459\n",
      "Epoch: 6720/30000, Loss: 0.00012683\n",
      "Epoch: 6730/30000, Loss: 0.00008402\n",
      "Epoch: 6740/30000, Loss: 0.00008315\n",
      "Epoch: 6750/30000, Loss: 0.00018965\n",
      "Epoch: 6760/30000, Loss: 0.00011179\n",
      "Epoch: 6770/30000, Loss: 0.00009243\n",
      "Epoch: 6780/30000, Loss: 0.00007518\n",
      "Epoch: 6790/30000, Loss: 0.00007256\n",
      "Epoch: 6800/30000, Loss: 0.00007284\n",
      "Epoch: 6810/30000, Loss: 0.00007221\n",
      "Epoch: 6820/30000, Loss: 0.00007263\n",
      "Epoch: 6830/30000, Loss: 0.00007592\n",
      "Epoch: 6840/30000, Loss: 0.00010123\n",
      "Epoch: 6850/30000, Loss: 0.00013105\n",
      "Epoch: 6860/30000, Loss: 0.00020998\n",
      "Epoch: 6870/30000, Loss: 0.00010805\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 6880/30000, Loss: 0.00007695\n",
      "Epoch: 6890/30000, Loss: 0.00007156\n",
      "Epoch: 6900/30000, Loss: 0.00006950\n",
      "Epoch: 6910/30000, Loss: 0.00006880\n",
      "Epoch: 6920/30000, Loss: 0.00007075\n",
      "Epoch: 6930/30000, Loss: 0.00007080\n",
      "Epoch: 6940/30000, Loss: 0.00007596\n",
      "Epoch: 6950/30000, Loss: 0.00012802\n",
      "Epoch: 6960/30000, Loss: 0.00015224\n",
      "Epoch: 6970/30000, Loss: 0.00010804\n",
      "Epoch: 6980/30000, Loss: 0.00007929\n",
      "Epoch: 6990/30000, Loss: 0.00007213\n",
      "Epoch: 7000/30000, Loss: 0.00007123\n",
      "Epoch: 7010/30000, Loss: 0.00006821\n",
      "Epoch: 7020/30000, Loss: 0.00006805\n",
      "Epoch: 7030/30000, Loss: 0.00007375\n",
      "Epoch: 7040/30000, Loss: 0.00015502\n",
      "Epoch: 7050/30000, Loss: 0.00010184\n",
      "Epoch: 7060/30000, Loss: 0.00009751\n",
      "Epoch: 7070/30000, Loss: 0.00007919\n",
      "Epoch: 7080/30000, Loss: 0.00007113\n",
      "Epoch: 7090/30000, Loss: 0.00006832\n",
      "Epoch: 7100/30000, Loss: 0.00006841\n",
      "Epoch: 7110/30000, Loss: 0.00008944\n",
      "Epoch: 7120/30000, Loss: 0.00011836\n",
      "Epoch: 7130/30000, Loss: 0.00007397\n",
      "Epoch: 7140/30000, Loss: 0.00009842\n",
      "Epoch: 7150/30000, Loss: 0.00014675\n",
      "Epoch: 7160/30000, Loss: 0.00007913\n",
      "Epoch: 7170/30000, Loss: 0.00007649\n",
      "Epoch: 7180/30000, Loss: 0.00007280\n",
      "Epoch: 7190/30000, Loss: 0.00007087\n",
      "Epoch: 7200/30000, Loss: 0.00006932\n",
      "Epoch: 7210/30000, Loss: 0.00007445\n",
      "Epoch: 7220/30000, Loss: 0.00016846\n",
      "Epoch: 7230/30000, Loss: 0.00012140\n",
      "Epoch: 7240/30000, Loss: 0.00007900\n",
      "Epoch: 7250/30000, Loss: 0.00007023\n",
      "Epoch: 7260/30000, Loss: 0.00009532\n",
      "Epoch: 7270/30000, Loss: 0.00012345\n",
      "Epoch: 7280/30000, Loss: 0.00007861\n",
      "Epoch: 7290/30000, Loss: 0.00006884\n",
      "Epoch: 7300/30000, Loss: 0.00006647\n",
      "Epoch: 7310/30000, Loss: 0.00006637\n",
      "Epoch: 7320/30000, Loss: 0.00007007\n",
      "Epoch: 7330/30000, Loss: 0.00017365\n",
      "Epoch: 7340/30000, Loss: 0.00013979\n",
      "Epoch: 7350/30000, Loss: 0.00008292\n",
      "Epoch: 7360/30000, Loss: 0.00007575\n",
      "Epoch: 7370/30000, Loss: 0.00008196\n",
      "Epoch: 7380/30000, Loss: 0.00008374\n",
      "Epoch: 7390/30000, Loss: 0.00007206\n",
      "Epoch: 7400/30000, Loss: 0.00006891\n",
      "Epoch: 7410/30000, Loss: 0.00008952\n",
      "Epoch: 7420/30000, Loss: 0.00017426\n",
      "Epoch: 7430/30000, Loss: 0.00009168\n",
      "Epoch: 7440/30000, Loss: 0.00007563\n",
      "Epoch: 7450/30000, Loss: 0.00007014\n",
      "Epoch: 7460/30000, Loss: 0.00006737\n",
      "Epoch: 7470/30000, Loss: 0.00007126\n",
      "Epoch: 7480/30000, Loss: 0.00015025\n",
      "Epoch: 7490/30000, Loss: 0.00013792\n",
      "Epoch: 7500/30000, Loss: 0.00009065\n",
      "Epoch: 7510/30000, Loss: 0.00007304\n",
      "Epoch: 7520/30000, Loss: 0.00007369\n",
      "Epoch: 7530/30000, Loss: 0.00007386\n",
      "Epoch: 7540/30000, Loss: 0.00008771\n",
      "Epoch: 7550/30000, Loss: 0.00010751\n",
      "Epoch: 7560/30000, Loss: 0.00006919\n",
      "Epoch: 7570/30000, Loss: 0.00007173\n",
      "Epoch: 7580/30000, Loss: 0.00007239\n",
      "Epoch: 7590/30000, Loss: 0.00011789\n",
      "Epoch: 7600/30000, Loss: 0.00010888\n",
      "Epoch: 7610/30000, Loss: 0.00007655\n",
      "Epoch: 7620/30000, Loss: 0.00007587\n",
      "Epoch: 7630/30000, Loss: 0.00006834\n",
      "Epoch: 7640/30000, Loss: 0.00006594\n",
      "Epoch: 7650/30000, Loss: 0.00008963\n",
      "Epoch: 7660/30000, Loss: 0.00016433\n",
      "Epoch: 7670/30000, Loss: 0.00008661\n",
      "Epoch: 7680/30000, Loss: 0.00006905\n",
      "Epoch: 7690/30000, Loss: 0.00006686\n",
      "Epoch: 7700/30000, Loss: 0.00006523\n",
      "Epoch: 7710/30000, Loss: 0.00006488\n",
      "Epoch: 7720/30000, Loss: 0.00006736\n",
      "Epoch: 7730/30000, Loss: 0.00014581\n",
      "Epoch: 7740/30000, Loss: 0.00018113\n",
      "Epoch: 7750/30000, Loss: 0.00007979\n",
      "Epoch: 7760/30000, Loss: 0.00008031\n",
      "Epoch: 7770/30000, Loss: 0.00006591\n",
      "Epoch: 7780/30000, Loss: 0.00006274\n",
      "Epoch: 7790/30000, Loss: 0.00006168\n",
      "Epoch: 7800/30000, Loss: 0.00006178\n",
      "Epoch: 7810/30000, Loss: 0.00006193\n",
      "Epoch: 7820/30000, Loss: 0.00006773\n",
      "Epoch: 7830/30000, Loss: 0.00017050\n",
      "Epoch: 7840/30000, Loss: 0.00010763\n",
      "Epoch: 7850/30000, Loss: 0.00009881\n",
      "Epoch: 7860/30000, Loss: 0.00007029\n",
      "Epoch: 7870/30000, Loss: 0.00006477\n",
      "Epoch: 7880/30000, Loss: 0.00006428\n",
      "Epoch: 7890/30000, Loss: 0.00008632\n",
      "Epoch: 7900/30000, Loss: 0.00009002\n",
      "Epoch: 7910/30000, Loss: 0.00006637\n",
      "Epoch: 7920/30000, Loss: 0.00006306\n",
      "Epoch: 7930/30000, Loss: 0.00006788\n",
      "Epoch: 7940/30000, Loss: 0.00019224\n",
      "Epoch: 7950/30000, Loss: 0.00011278\n",
      "Epoch: 7960/30000, Loss: 0.00008155\n",
      "Epoch: 7970/30000, Loss: 0.00006998\n",
      "Epoch: 7980/30000, Loss: 0.00006700\n",
      "Epoch: 7990/30000, Loss: 0.00008539\n",
      "Epoch: 8000/30000, Loss: 0.00008901\n",
      "Epoch: 8010/30000, Loss: 0.00006932\n",
      "Epoch: 8020/30000, Loss: 0.00006349\n",
      "Epoch: 8030/30000, Loss: 0.00007031\n",
      "Epoch: 8040/30000, Loss: 0.00023690\n",
      "Epoch: 8050/30000, Loss: 0.00011527\n",
      "Epoch: 8060/30000, Loss: 0.00007274\n",
      "Epoch: 8070/30000, Loss: 0.00006587\n",
      "Epoch: 8080/30000, Loss: 0.00006430\n",
      "Epoch: 8090/30000, Loss: 0.00006456\n",
      "Epoch: 8100/30000, Loss: 0.00007649\n",
      "Epoch: 8110/30000, Loss: 0.00013659\n",
      "Epoch: 8120/30000, Loss: 0.00007830\n",
      "Epoch: 8130/30000, Loss: 0.00006241\n",
      "Epoch: 8140/30000, Loss: 0.00006645\n",
      "Epoch: 8150/30000, Loss: 0.00023808\n",
      "Epoch: 8160/30000, Loss: 0.00011987\n",
      "Epoch: 8170/30000, Loss: 0.00006661\n",
      "Epoch: 8180/30000, Loss: 0.00006364\n",
      "Epoch: 8190/30000, Loss: 0.00006436\n",
      "Epoch: 8200/30000, Loss: 0.00007349\n",
      "Epoch: 8210/30000, Loss: 0.00014416\n",
      "Epoch: 8220/30000, Loss: 0.00008123\n",
      "Epoch: 8230/30000, Loss: 0.00006567\n",
      "Epoch: 8240/30000, Loss: 0.00006073\n",
      "Epoch: 8250/30000, Loss: 0.00005999\n",
      "Epoch: 8260/30000, Loss: 0.00008044\n",
      "Epoch: 8270/30000, Loss: 0.00019683\n",
      "Epoch: 8280/30000, Loss: 0.00007138\n",
      "Epoch: 8290/30000, Loss: 0.00007983\n",
      "Epoch: 8300/30000, Loss: 0.00006328\n",
      "Epoch: 8310/30000, Loss: 0.00005951\n",
      "Epoch: 8320/30000, Loss: 0.00006383\n",
      "Epoch: 8330/30000, Loss: 0.00018000\n",
      "Epoch: 8340/30000, Loss: 0.00010192\n",
      "Epoch: 8350/30000, Loss: 0.00006364\n",
      "Epoch: 8360/30000, Loss: 0.00006359\n",
      "Epoch: 8370/30000, Loss: 0.00006061\n",
      "Epoch: 8380/30000, Loss: 0.00005878\n",
      "Epoch: 8390/30000, Loss: 0.00005899\n",
      "Epoch: 8400/30000, Loss: 0.00006503\n",
      "Epoch: 8410/30000, Loss: 0.00051196\n",
      "Epoch: 8420/30000, Loss: 0.00011745\n",
      "Epoch: 8430/30000, Loss: 0.00008214\n",
      "Epoch: 8440/30000, Loss: 0.00006534\n",
      "Epoch: 8450/30000, Loss: 0.00005914\n",
      "Epoch: 8460/30000, Loss: 0.00005927\n",
      "Epoch: 8470/30000, Loss: 0.00005801\n",
      "Epoch: 8480/30000, Loss: 0.00005901\n",
      "Epoch: 8490/30000, Loss: 0.00006164\n",
      "Epoch: 8500/30000, Loss: 0.00006405\n",
      "Epoch: 8510/30000, Loss: 0.00016671\n",
      "Epoch: 8520/30000, Loss: 0.00015532\n",
      "Epoch: 8530/30000, Loss: 0.00009094\n",
      "Epoch: 8540/30000, Loss: 0.00006673\n",
      "Epoch: 8550/30000, Loss: 0.00005868\n",
      "Epoch: 8560/30000, Loss: 0.00005814\n",
      "Epoch: 8570/30000, Loss: 0.00005697\n",
      "Epoch: 8580/30000, Loss: 0.00005706\n",
      "Epoch: 8590/30000, Loss: 0.00005721\n",
      "Epoch: 8600/30000, Loss: 0.00005991\n",
      "Epoch: 8610/30000, Loss: 0.00016927\n",
      "Epoch: 8620/30000, Loss: 0.00011858\n",
      "Epoch: 8630/30000, Loss: 0.00008116\n",
      "Epoch: 8640/30000, Loss: 0.00005990\n",
      "Epoch: 8650/30000, Loss: 0.00005989\n",
      "Epoch: 8660/30000, Loss: 0.00005870\n",
      "Epoch: 8670/30000, Loss: 0.00005736\n",
      "Epoch: 8680/30000, Loss: 0.00005951\n",
      "Epoch: 8690/30000, Loss: 0.00006133\n",
      "Epoch: 8700/30000, Loss: 0.00007737\n",
      "Epoch: 8710/30000, Loss: 0.00019835\n",
      "Epoch: 8720/30000, Loss: 0.00007869\n",
      "Epoch: 8730/30000, Loss: 0.00006385\n",
      "Epoch: 8740/30000, Loss: 0.00006308\n",
      "Epoch: 8750/30000, Loss: 0.00005852\n",
      "Epoch: 8760/30000, Loss: 0.00005819\n",
      "Epoch: 8770/30000, Loss: 0.00008053\n",
      "Epoch: 8780/30000, Loss: 0.00012774\n",
      "Epoch: 8790/30000, Loss: 0.00007747\n",
      "Epoch: 8800/30000, Loss: 0.00006285\n",
      "Epoch: 8810/30000, Loss: 0.00005664\n",
      "Epoch: 8820/30000, Loss: 0.00005884\n",
      "Epoch: 8830/30000, Loss: 0.00006264\n",
      "Epoch: 8840/30000, Loss: 0.00011086\n",
      "Epoch: 8850/30000, Loss: 0.00014350\n",
      "Epoch: 8860/30000, Loss: 0.00009040\n",
      "Epoch: 8870/30000, Loss: 0.00008650\n",
      "Epoch: 8880/30000, Loss: 0.00006260\n",
      "Epoch: 8890/30000, Loss: 0.00005842\n",
      "Epoch: 8900/30000, Loss: 0.00005580\n",
      "Epoch: 8910/30000, Loss: 0.00005657\n",
      "Epoch: 8920/30000, Loss: 0.00005851\n",
      "Epoch: 8930/30000, Loss: 0.00006582\n",
      "Epoch: 8940/30000, Loss: 0.00025197\n",
      "Epoch: 8950/30000, Loss: 0.00014070\n",
      "Epoch: 8960/30000, Loss: 0.00008232\n",
      "Epoch: 8970/30000, Loss: 0.00006907\n",
      "Epoch: 8980/30000, Loss: 0.00005944\n",
      "Epoch: 8990/30000, Loss: 0.00005512\n",
      "Epoch: 9000/30000, Loss: 0.00005434\n",
      "Epoch: 9010/30000, Loss: 0.00005399\n",
      "Epoch: 9020/30000, Loss: 0.00005490\n",
      "Epoch: 9030/30000, Loss: 0.00011929\n",
      "Epoch: 9040/30000, Loss: 0.00007670\n",
      "Epoch: 9050/30000, Loss: 0.00010904\n",
      "Epoch: 9060/30000, Loss: 0.00005960\n",
      "Epoch: 9070/30000, Loss: 0.00005927\n",
      "Epoch: 9080/30000, Loss: 0.00005655\n",
      "Epoch: 9090/30000, Loss: 0.00005539\n",
      "Epoch: 9100/30000, Loss: 0.00005680\n",
      "Epoch: 9110/30000, Loss: 0.00006388\n",
      "Epoch: 9120/30000, Loss: 0.00025289\n",
      "Epoch: 9130/30000, Loss: 0.00008769\n",
      "Epoch: 9140/30000, Loss: 0.00007840\n",
      "Epoch: 9150/30000, Loss: 0.00005855\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 9160/30000, Loss: 0.00005733\n",
      "Epoch: 9170/30000, Loss: 0.00005610\n",
      "Epoch: 9180/30000, Loss: 0.00005448\n",
      "Epoch: 9190/30000, Loss: 0.00005705\n",
      "Epoch: 9200/30000, Loss: 0.00005766\n",
      "Epoch: 9210/30000, Loss: 0.00013910\n",
      "Epoch: 9220/30000, Loss: 0.00010384\n",
      "Epoch: 9230/30000, Loss: 0.00009700\n",
      "Epoch: 9240/30000, Loss: 0.00006006\n",
      "Epoch: 9250/30000, Loss: 0.00005832\n",
      "Epoch: 9260/30000, Loss: 0.00005844\n",
      "Epoch: 9270/30000, Loss: 0.00005673\n",
      "Epoch: 9280/30000, Loss: 0.00007986\n",
      "Epoch: 9290/30000, Loss: 0.00010781\n",
      "Epoch: 9300/30000, Loss: 0.00007303\n",
      "Epoch: 9310/30000, Loss: 0.00007235\n",
      "Epoch: 9320/30000, Loss: 0.00005760\n",
      "Epoch: 9330/30000, Loss: 0.00006318\n",
      "Epoch: 9340/30000, Loss: 0.00013612\n",
      "Epoch: 9350/30000, Loss: 0.00006604\n",
      "Epoch: 9360/30000, Loss: 0.00006024\n",
      "Epoch: 9370/30000, Loss: 0.00005714\n",
      "Epoch: 9380/30000, Loss: 0.00005672\n",
      "Epoch: 9390/30000, Loss: 0.00005841\n",
      "Epoch: 9400/30000, Loss: 0.00006695\n",
      "Epoch: 9410/30000, Loss: 0.00023835\n",
      "Epoch: 9420/30000, Loss: 0.00011379\n",
      "Epoch: 9430/30000, Loss: 0.00006618\n",
      "Epoch: 9440/30000, Loss: 0.00006065\n",
      "Epoch: 9450/30000, Loss: 0.00005697\n",
      "Epoch: 9460/30000, Loss: 0.00005465\n",
      "Epoch: 9470/30000, Loss: 0.00005569\n",
      "Epoch: 9480/30000, Loss: 0.00005806\n",
      "Epoch: 9490/30000, Loss: 0.00008093\n",
      "Epoch: 9500/30000, Loss: 0.00017118\n",
      "Epoch: 9510/30000, Loss: 0.00007258\n",
      "Epoch: 9520/30000, Loss: 0.00008404\n",
      "Epoch: 9530/30000, Loss: 0.00007040\n",
      "Epoch: 9540/30000, Loss: 0.00006117\n",
      "Epoch: 9550/30000, Loss: 0.00005687\n",
      "Epoch: 9560/30000, Loss: 0.00006427\n",
      "Epoch: 9570/30000, Loss: 0.00012844\n",
      "Epoch: 9580/30000, Loss: 0.00008148\n",
      "Epoch: 9590/30000, Loss: 0.00006154\n",
      "Epoch: 9600/30000, Loss: 0.00006200\n",
      "Epoch: 9610/30000, Loss: 0.00009700\n",
      "Epoch: 9620/30000, Loss: 0.00007258\n",
      "Epoch: 9630/30000, Loss: 0.00006238\n",
      "Epoch: 9640/30000, Loss: 0.00005871\n",
      "Epoch: 9650/30000, Loss: 0.00006556\n",
      "Epoch: 9660/30000, Loss: 0.00009610\n",
      "Epoch: 9670/30000, Loss: 0.00015185\n",
      "Epoch: 9680/30000, Loss: 0.00007189\n",
      "Epoch: 9690/30000, Loss: 0.00005885\n",
      "Epoch: 9700/30000, Loss: 0.00005578\n",
      "Epoch: 9710/30000, Loss: 0.00005513\n",
      "Epoch: 9720/30000, Loss: 0.00005679\n",
      "Epoch: 9730/30000, Loss: 0.00006844\n",
      "Epoch: 9740/30000, Loss: 0.00032459\n",
      "Epoch: 9750/30000, Loss: 0.00011322\n",
      "Epoch: 9760/30000, Loss: 0.00007414\n",
      "Epoch: 9770/30000, Loss: 0.00006260\n",
      "Epoch: 9780/30000, Loss: 0.00006476\n",
      "Epoch: 9790/30000, Loss: 0.00016178\n",
      "Epoch: 9800/30000, Loss: 0.00009001\n",
      "Epoch: 9810/30000, Loss: 0.00007908\n",
      "Epoch: 9820/30000, Loss: 0.00006115\n",
      "Epoch: 9830/30000, Loss: 0.00005402\n",
      "Epoch: 9840/30000, Loss: 0.00005321\n",
      "Epoch: 9850/30000, Loss: 0.00009978\n",
      "Epoch: 9860/30000, Loss: 0.00007061\n",
      "Epoch: 9870/30000, Loss: 0.00010273\n",
      "Epoch: 9880/30000, Loss: 0.00007076\n",
      "Epoch: 9890/30000, Loss: 0.00006121\n",
      "Epoch: 9900/30000, Loss: 0.00005736\n",
      "Epoch: 9910/30000, Loss: 0.00005529\n",
      "Epoch: 9920/30000, Loss: 0.00005598\n",
      "Epoch: 9930/30000, Loss: 0.00007553\n",
      "Epoch: 9940/30000, Loss: 0.00010179\n",
      "Epoch: 9950/30000, Loss: 0.00012089\n",
      "Epoch: 9960/30000, Loss: 0.00006129\n",
      "Epoch: 9970/30000, Loss: 0.00006052\n",
      "Epoch: 9980/30000, Loss: 0.00005801\n",
      "Epoch: 9990/30000, Loss: 0.00005374\n",
      "Epoch: 10000/30000, Loss: 0.00005322\n",
      "Epoch: 10010/30000, Loss: 0.00005333\n",
      "Epoch: 10020/30000, Loss: 0.00007486\n",
      "Epoch: 10030/30000, Loss: 0.00022160\n",
      "Epoch: 10040/30000, Loss: 0.00009272\n",
      "Epoch: 10050/30000, Loss: 0.00008137\n",
      "Epoch: 10060/30000, Loss: 0.00005973\n",
      "Epoch: 10070/30000, Loss: 0.00005572\n",
      "Epoch: 10080/30000, Loss: 0.00005373\n",
      "Epoch: 10090/30000, Loss: 0.00005399\n",
      "Epoch: 10100/30000, Loss: 0.00005497\n",
      "Epoch: 10110/30000, Loss: 0.00006328\n",
      "Epoch: 10120/30000, Loss: 0.00020289\n",
      "Epoch: 10130/30000, Loss: 0.00006688\n",
      "Epoch: 10140/30000, Loss: 0.00006360\n",
      "Epoch: 10150/30000, Loss: 0.00005961\n",
      "Epoch: 10160/30000, Loss: 0.00011353\n",
      "Epoch: 10170/30000, Loss: 0.00006633\n",
      "Epoch: 10180/30000, Loss: 0.00007217\n",
      "Epoch: 10190/30000, Loss: 0.00006274\n",
      "Epoch: 10200/30000, Loss: 0.00005569\n",
      "Epoch: 10210/30000, Loss: 0.00005356\n",
      "Epoch: 10220/30000, Loss: 0.00005262\n",
      "Epoch: 10230/30000, Loss: 0.00005621\n",
      "Epoch: 10240/30000, Loss: 0.00005782\n",
      "Epoch: 10250/30000, Loss: 0.00006819\n",
      "Epoch: 10260/30000, Loss: 0.00020899\n",
      "Epoch: 10270/30000, Loss: 0.00011049\n",
      "Epoch: 10280/30000, Loss: 0.00007251\n",
      "Epoch: 10290/30000, Loss: 0.00005639\n",
      "Epoch: 10300/30000, Loss: 0.00005567\n",
      "Epoch: 10310/30000, Loss: 0.00005304\n",
      "Epoch: 10320/30000, Loss: 0.00005174\n",
      "Epoch: 10330/30000, Loss: 0.00005464\n",
      "Epoch: 10340/30000, Loss: 0.00013314\n",
      "Epoch: 10350/30000, Loss: 0.00007889\n",
      "Epoch: 10360/30000, Loss: 0.00010376\n",
      "Epoch: 10370/30000, Loss: 0.00005696\n",
      "Epoch: 10380/30000, Loss: 0.00005705\n",
      "Epoch: 10390/30000, Loss: 0.00005630\n",
      "Epoch: 10400/30000, Loss: 0.00005561\n",
      "Epoch: 10410/30000, Loss: 0.00005799\n",
      "Epoch: 10420/30000, Loss: 0.00005509\n",
      "Epoch: 10430/30000, Loss: 0.00005971\n",
      "Epoch: 10440/30000, Loss: 0.00006884\n",
      "Epoch: 10450/30000, Loss: 0.00028192\n",
      "Epoch: 10460/30000, Loss: 0.00010740\n",
      "Epoch: 10470/30000, Loss: 0.00007928\n",
      "Epoch: 10480/30000, Loss: 0.00005782\n",
      "Epoch: 10490/30000, Loss: 0.00005501\n",
      "Epoch: 10500/30000, Loss: 0.00006727\n",
      "Epoch: 10510/30000, Loss: 0.00006857\n",
      "Epoch: 10520/30000, Loss: 0.00005315\n",
      "Epoch: 10530/30000, Loss: 0.00005688\n",
      "Epoch: 10540/30000, Loss: 0.00006997\n",
      "Epoch: 10550/30000, Loss: 0.00009383\n",
      "Epoch: 10560/30000, Loss: 0.00005288\n",
      "Epoch: 10570/30000, Loss: 0.00005972\n",
      "Epoch: 10580/30000, Loss: 0.00006001\n",
      "Epoch: 10590/30000, Loss: 0.00007819\n",
      "Epoch: 10600/30000, Loss: 0.00011929\n",
      "Epoch: 10610/30000, Loss: 0.00007833\n",
      "Epoch: 10620/30000, Loss: 0.00006707\n",
      "Epoch: 10630/30000, Loss: 0.00010206\n",
      "Epoch: 10640/30000, Loss: 0.00010392\n",
      "Epoch: 10650/30000, Loss: 0.00007171\n",
      "Epoch: 10660/30000, Loss: 0.00005922\n",
      "Epoch: 10670/30000, Loss: 0.00005266\n",
      "Epoch: 10680/30000, Loss: 0.00005396\n",
      "Epoch: 10690/30000, Loss: 0.00022656\n",
      "Epoch: 10700/30000, Loss: 0.00010386\n",
      "Epoch: 10710/30000, Loss: 0.00007030\n",
      "Epoch: 10720/30000, Loss: 0.00005624\n",
      "Epoch: 10730/30000, Loss: 0.00005219\n",
      "Epoch: 10740/30000, Loss: 0.00005334\n",
      "Epoch: 10750/30000, Loss: 0.00010417\n",
      "Epoch: 10760/30000, Loss: 0.00009973\n",
      "Epoch: 10770/30000, Loss: 0.00007168\n",
      "Epoch: 10780/30000, Loss: 0.00006670\n",
      "Epoch: 10790/30000, Loss: 0.00005717\n",
      "Epoch: 10800/30000, Loss: 0.00005267\n",
      "Epoch: 10810/30000, Loss: 0.00005268\n",
      "Epoch: 10820/30000, Loss: 0.00005289\n",
      "Epoch: 10830/30000, Loss: 0.00005496\n",
      "Epoch: 10840/30000, Loss: 0.00008268\n",
      "Epoch: 10850/30000, Loss: 0.00010075\n",
      "Epoch: 10860/30000, Loss: 0.00008812\n",
      "Epoch: 10870/30000, Loss: 0.00006061\n",
      "Epoch: 10880/30000, Loss: 0.00005468\n",
      "Epoch: 10890/30000, Loss: 0.00008042\n",
      "Epoch: 10900/30000, Loss: 0.00010607\n",
      "Epoch: 10910/30000, Loss: 0.00006506\n",
      "Epoch: 10920/30000, Loss: 0.00005572\n",
      "Epoch: 10930/30000, Loss: 0.00005388\n",
      "Epoch: 10940/30000, Loss: 0.00005442\n",
      "Epoch: 10950/30000, Loss: 0.00007873\n",
      "Epoch: 10960/30000, Loss: 0.00010006\n",
      "Epoch: 10970/30000, Loss: 0.00006404\n",
      "Epoch: 10980/30000, Loss: 0.00007516\n",
      "Epoch: 10990/30000, Loss: 0.00017832\n",
      "Epoch: 11000/30000, Loss: 0.00006605\n",
      "Epoch: 11010/30000, Loss: 0.00006472\n",
      "Epoch: 11020/30000, Loss: 0.00005748\n",
      "Epoch: 11030/30000, Loss: 0.00005300\n",
      "Epoch: 11040/30000, Loss: 0.00005464\n",
      "Epoch: 11050/30000, Loss: 0.00006188\n",
      "Epoch: 11060/30000, Loss: 0.00015139\n",
      "Epoch: 11070/30000, Loss: 0.00008605\n",
      "Epoch: 11080/30000, Loss: 0.00005621\n",
      "Epoch: 11090/30000, Loss: 0.00005326\n",
      "Epoch: 11100/30000, Loss: 0.00007328\n",
      "Epoch: 11110/30000, Loss: 0.00014999\n",
      "Epoch: 11120/30000, Loss: 0.00006667\n",
      "Epoch: 11130/30000, Loss: 0.00005639\n",
      "Epoch: 11140/30000, Loss: 0.00005385\n",
      "Epoch: 11150/30000, Loss: 0.00005329\n",
      "Epoch: 11160/30000, Loss: 0.00005560\n",
      "Epoch: 11170/30000, Loss: 0.00005640\n",
      "Epoch: 11180/30000, Loss: 0.00013633\n",
      "Epoch: 11190/30000, Loss: 0.00012016\n",
      "Epoch: 11200/30000, Loss: 0.00006561\n",
      "Epoch: 11210/30000, Loss: 0.00007208\n",
      "Epoch: 11220/30000, Loss: 0.00020101\n",
      "Epoch: 11230/30000, Loss: 0.00008657\n",
      "Epoch: 11240/30000, Loss: 0.00005499\n",
      "Epoch: 11250/30000, Loss: 0.00005316\n",
      "Epoch: 11260/30000, Loss: 0.00005188\n",
      "Epoch: 11270/30000, Loss: 0.00005140\n",
      "Epoch: 11280/30000, Loss: 0.00005340\n",
      "Epoch: 11290/30000, Loss: 0.00005635\n",
      "Epoch: 11300/30000, Loss: 0.00005725\n",
      "Epoch: 11310/30000, Loss: 0.00006409\n",
      "Epoch: 11320/30000, Loss: 0.00010180\n",
      "Epoch: 11330/30000, Loss: 0.00017070\n",
      "Epoch: 11340/30000, Loss: 0.00007048\n",
      "Epoch: 11350/30000, Loss: 0.00006670\n",
      "Epoch: 11360/30000, Loss: 0.00005386\n",
      "Epoch: 11370/30000, Loss: 0.00005122\n",
      "Epoch: 11380/30000, Loss: 0.00005234\n",
      "Epoch: 11390/30000, Loss: 0.00006928\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 11400/30000, Loss: 0.00017695\n",
      "Epoch: 11410/30000, Loss: 0.00008929\n",
      "Epoch: 11420/30000, Loss: 0.00006640\n",
      "Epoch: 11430/30000, Loss: 0.00005891\n",
      "Epoch: 11440/30000, Loss: 0.00005384\n",
      "Epoch: 11450/30000, Loss: 0.00005608\n",
      "Epoch: 11460/30000, Loss: 0.00005586\n",
      "Epoch: 11470/30000, Loss: 0.00005852\n",
      "Epoch: 11480/30000, Loss: 0.00006495\n",
      "Epoch: 11490/30000, Loss: 0.00032576\n",
      "Epoch: 11500/30000, Loss: 0.00013601\n",
      "Epoch: 11510/30000, Loss: 0.00009151\n",
      "Epoch: 11520/30000, Loss: 0.00005424\n",
      "Epoch: 11530/30000, Loss: 0.00005825\n",
      "Epoch: 11540/30000, Loss: 0.00005187\n",
      "Epoch: 11550/30000, Loss: 0.00005330\n",
      "Epoch: 11560/30000, Loss: 0.00008887\n",
      "Epoch: 11570/30000, Loss: 0.00007542\n",
      "Epoch: 11580/30000, Loss: 0.00006167\n",
      "Epoch: 11590/30000, Loss: 0.00005618\n",
      "Epoch: 11600/30000, Loss: 0.00005218\n",
      "Epoch: 11610/30000, Loss: 0.00005209\n",
      "Epoch: 11620/30000, Loss: 0.00005509\n",
      "Epoch: 11630/30000, Loss: 0.00005402\n",
      "Epoch: 11640/30000, Loss: 0.00006267\n",
      "Epoch: 11650/30000, Loss: 0.00029170\n",
      "Epoch: 11660/30000, Loss: 0.00016674\n",
      "Epoch: 11670/30000, Loss: 0.00007599\n",
      "Epoch: 11680/30000, Loss: 0.00005690\n",
      "Epoch: 11690/30000, Loss: 0.00005423\n",
      "Epoch: 11700/30000, Loss: 0.00005332\n",
      "Epoch: 11710/30000, Loss: 0.00005292\n",
      "Epoch: 11720/30000, Loss: 0.00005253\n",
      "Epoch: 11730/30000, Loss: 0.00005640\n",
      "Epoch: 11740/30000, Loss: 0.00005596\n",
      "Epoch: 11750/30000, Loss: 0.00014768\n",
      "Epoch: 11760/30000, Loss: 0.00009204\n",
      "Epoch: 11770/30000, Loss: 0.00009305\n",
      "Epoch: 11780/30000, Loss: 0.00006184\n",
      "Epoch: 11790/30000, Loss: 0.00005217\n",
      "Epoch: 11800/30000, Loss: 0.00005134\n",
      "Epoch: 11810/30000, Loss: 0.00005057\n",
      "Epoch: 11820/30000, Loss: 0.00004977\n",
      "Epoch: 11830/30000, Loss: 0.00005293\n",
      "Epoch: 11840/30000, Loss: 0.00005629\n",
      "Epoch: 11850/30000, Loss: 0.00005754\n",
      "Epoch: 11860/30000, Loss: 0.00005944\n",
      "Epoch: 11870/30000, Loss: 0.00005617\n",
      "Epoch: 11880/30000, Loss: 0.00005633\n",
      "Epoch: 11890/30000, Loss: 0.00007693\n",
      "Epoch: 11900/30000, Loss: 0.00038759\n",
      "Epoch: 11910/30000, Loss: 0.00010630\n",
      "Epoch: 11920/30000, Loss: 0.00006070\n",
      "Epoch: 11930/30000, Loss: 0.00005704\n",
      "Epoch: 11940/30000, Loss: 0.00005370\n",
      "Epoch: 11950/30000, Loss: 0.00005225\n",
      "Epoch: 11960/30000, Loss: 0.00005137\n",
      "Epoch: 11970/30000, Loss: 0.00005271\n",
      "Epoch: 11980/30000, Loss: 0.00009427\n",
      "Epoch: 11990/30000, Loss: 0.00006157\n",
      "Epoch: 12000/30000, Loss: 0.00005348\n",
      "Epoch: 12010/30000, Loss: 0.00005075\n",
      "Epoch: 12020/30000, Loss: 0.00005131\n",
      "Epoch: 12030/30000, Loss: 0.00005330\n",
      "Epoch: 12040/30000, Loss: 0.00005818\n",
      "Epoch: 12050/30000, Loss: 0.00007639\n",
      "Epoch: 12060/30000, Loss: 0.00010945\n",
      "Epoch: 12070/30000, Loss: 0.00007013\n",
      "Epoch: 12080/30000, Loss: 0.00005691\n",
      "Epoch: 12090/30000, Loss: 0.00005209\n",
      "Epoch: 12100/30000, Loss: 0.00006325\n",
      "Epoch: 12110/30000, Loss: 0.00012973\n",
      "Epoch: 12120/30000, Loss: 0.00006653\n",
      "Epoch: 12130/30000, Loss: 0.00006156\n",
      "Epoch: 12140/30000, Loss: 0.00016225\n",
      "Epoch: 12150/30000, Loss: 0.00007921\n",
      "Epoch: 12160/30000, Loss: 0.00006543\n",
      "Epoch: 12170/30000, Loss: 0.00005542\n",
      "Epoch: 12180/30000, Loss: 0.00005186\n",
      "Epoch: 12190/30000, Loss: 0.00005177\n",
      "Epoch: 12200/30000, Loss: 0.00005624\n",
      "Epoch: 12210/30000, Loss: 0.00017733\n",
      "Epoch: 12220/30000, Loss: 0.00009230\n",
      "Epoch: 12230/30000, Loss: 0.00006189\n",
      "Epoch: 12240/30000, Loss: 0.00013284\n",
      "Epoch: 12250/30000, Loss: 0.00006913\n",
      "Epoch: 12260/30000, Loss: 0.00007740\n",
      "Epoch: 12270/30000, Loss: 0.00005865\n",
      "Epoch: 12280/30000, Loss: 0.00005173\n",
      "Epoch: 12290/30000, Loss: 0.00005023\n",
      "Epoch: 12300/30000, Loss: 0.00005119\n",
      "Epoch: 12310/30000, Loss: 0.00009637\n",
      "Epoch: 12320/30000, Loss: 0.00007961\n",
      "Epoch: 12330/30000, Loss: 0.00006376\n",
      "Epoch: 12340/30000, Loss: 0.00005749\n",
      "Epoch: 12350/30000, Loss: 0.00007143\n",
      "Epoch: 12360/30000, Loss: 0.00012791\n",
      "Epoch: 12370/30000, Loss: 0.00007383\n",
      "Epoch: 12380/30000, Loss: 0.00005621\n",
      "Epoch: 12390/30000, Loss: 0.00005253\n",
      "Epoch: 12400/30000, Loss: 0.00008137\n",
      "Epoch: 12410/30000, Loss: 0.00007438\n",
      "Epoch: 12420/30000, Loss: 0.00005686\n",
      "Epoch: 12430/30000, Loss: 0.00005474\n",
      "Epoch: 12440/30000, Loss: 0.00011042\n",
      "Epoch: 12450/30000, Loss: 0.00007726\n",
      "Epoch: 12460/30000, Loss: 0.00008947\n",
      "Epoch: 12470/30000, Loss: 0.00005523\n",
      "Epoch: 12480/30000, Loss: 0.00005427\n",
      "Epoch: 12490/30000, Loss: 0.00005288\n",
      "Epoch: 12500/30000, Loss: 0.00005492\n",
      "Epoch: 12510/30000, Loss: 0.00011832\n",
      "Epoch: 12520/30000, Loss: 0.00008016\n",
      "Epoch: 12530/30000, Loss: 0.00006656\n",
      "Epoch: 12540/30000, Loss: 0.00005482\n",
      "Epoch: 12550/30000, Loss: 0.00005050\n",
      "Epoch: 12560/30000, Loss: 0.00005472\n",
      "Epoch: 12570/30000, Loss: 0.00012132\n",
      "Epoch: 12580/30000, Loss: 0.00006302\n",
      "Epoch: 12590/30000, Loss: 0.00006047\n",
      "Epoch: 12600/30000, Loss: 0.00005466\n",
      "Epoch: 12610/30000, Loss: 0.00005222\n",
      "Epoch: 12620/30000, Loss: 0.00005273\n",
      "Epoch: 12630/30000, Loss: 0.00007180\n",
      "Epoch: 12640/30000, Loss: 0.00010723\n",
      "Epoch: 12650/30000, Loss: 0.00008154\n",
      "Epoch: 12660/30000, Loss: 0.00005720\n",
      "Epoch: 12670/30000, Loss: 0.00009738\n",
      "Epoch: 12680/30000, Loss: 0.00007705\n",
      "Epoch: 12690/30000, Loss: 0.00007024\n",
      "Epoch: 12700/30000, Loss: 0.00006235\n",
      "Epoch: 12710/30000, Loss: 0.00005319\n",
      "Epoch: 12720/30000, Loss: 0.00005196\n",
      "Epoch: 12730/30000, Loss: 0.00005178\n",
      "Epoch: 12740/30000, Loss: 0.00005455\n",
      "Epoch: 12750/30000, Loss: 0.00005321\n",
      "Epoch: 12760/30000, Loss: 0.00005589\n",
      "Epoch: 12770/30000, Loss: 0.00005606\n",
      "Epoch: 12780/30000, Loss: 0.00007629\n",
      "Epoch: 12790/30000, Loss: 0.00021837\n",
      "Epoch: 12800/30000, Loss: 0.00008368\n",
      "Epoch: 12810/30000, Loss: 0.00007125\n",
      "Epoch: 12820/30000, Loss: 0.00005377\n",
      "Epoch: 12830/30000, Loss: 0.00005586\n",
      "Epoch: 12840/30000, Loss: 0.00008574\n",
      "Epoch: 12850/30000, Loss: 0.00006768\n",
      "Epoch: 12860/30000, Loss: 0.00006321\n",
      "Epoch: 12870/30000, Loss: 0.00005082\n",
      "Epoch: 12880/30000, Loss: 0.00005280\n",
      "Epoch: 12890/30000, Loss: 0.00007657\n",
      "Epoch: 12900/30000, Loss: 0.00013898\n",
      "Epoch: 12910/30000, Loss: 0.00008145\n",
      "Epoch: 12920/30000, Loss: 0.00006390\n",
      "Epoch: 12930/30000, Loss: 0.00005452\n",
      "Epoch: 12940/30000, Loss: 0.00005245\n",
      "Epoch: 12950/30000, Loss: 0.00005337\n",
      "Epoch: 12960/30000, Loss: 0.00005716\n",
      "Epoch: 12970/30000, Loss: 0.00008176\n",
      "Epoch: 12980/30000, Loss: 0.00017552\n",
      "Epoch: 12990/30000, Loss: 0.00010464\n",
      "Epoch: 13000/30000, Loss: 0.00007255\n",
      "Epoch: 13010/30000, Loss: 0.00005833\n",
      "Epoch: 13020/30000, Loss: 0.00005336\n",
      "Epoch: 13030/30000, Loss: 0.00004987\n",
      "Epoch: 13040/30000, Loss: 0.00005125\n",
      "Epoch: 13050/30000, Loss: 0.00005071\n",
      "Epoch: 13060/30000, Loss: 0.00005254\n",
      "Epoch: 13070/30000, Loss: 0.00014958\n",
      "Epoch: 13080/30000, Loss: 0.00015886\n",
      "Epoch: 13090/30000, Loss: 0.00008263\n",
      "Epoch: 13100/30000, Loss: 0.00006130\n",
      "Epoch: 13110/30000, Loss: 0.00007169\n",
      "Epoch: 13120/30000, Loss: 0.00017247\n",
      "Epoch: 13130/30000, Loss: 0.00006445\n",
      "Epoch: 13140/30000, Loss: 0.00006574\n",
      "Epoch: 13150/30000, Loss: 0.00005103\n",
      "Epoch: 13160/30000, Loss: 0.00005098\n",
      "Epoch: 13170/30000, Loss: 0.00005119\n",
      "Epoch: 13180/30000, Loss: 0.00005110\n",
      "Epoch: 13190/30000, Loss: 0.00005136\n",
      "Epoch: 13200/30000, Loss: 0.00005662\n",
      "Epoch: 13210/30000, Loss: 0.00005378\n",
      "Epoch: 13220/30000, Loss: 0.00006444\n",
      "Epoch: 13230/30000, Loss: 0.00006423\n",
      "Epoch: 13240/30000, Loss: 0.00008871\n",
      "Epoch: 13250/30000, Loss: 0.00009705\n",
      "Epoch: 13260/30000, Loss: 0.00005835\n",
      "Epoch: 13270/30000, Loss: 0.00005311\n",
      "Epoch: 13280/30000, Loss: 0.00005340\n",
      "Epoch: 13290/30000, Loss: 0.00010300\n",
      "Epoch: 13300/30000, Loss: 0.00007055\n",
      "Epoch: 13310/30000, Loss: 0.00006348\n",
      "Epoch: 13320/30000, Loss: 0.00005203\n",
      "Epoch: 13330/30000, Loss: 0.00004946\n",
      "Epoch: 13340/30000, Loss: 0.00005461\n",
      "Epoch: 13350/30000, Loss: 0.00020816\n",
      "Epoch: 13360/30000, Loss: 0.00010944\n",
      "Epoch: 13370/30000, Loss: 0.00006183\n",
      "Epoch: 13380/30000, Loss: 0.00005444\n",
      "Epoch: 13390/30000, Loss: 0.00005256\n",
      "Epoch: 13400/30000, Loss: 0.00005582\n",
      "Epoch: 13410/30000, Loss: 0.00009068\n",
      "Epoch: 13420/30000, Loss: 0.00006926\n",
      "Epoch: 13430/30000, Loss: 0.00006335\n",
      "Epoch: 13440/30000, Loss: 0.00005569\n",
      "Epoch: 13450/30000, Loss: 0.00005203\n",
      "Epoch: 13460/30000, Loss: 0.00007735\n",
      "Epoch: 13470/30000, Loss: 0.00012461\n",
      "Epoch: 13480/30000, Loss: 0.00006766\n",
      "Epoch: 13490/30000, Loss: 0.00005428\n",
      "Epoch: 13500/30000, Loss: 0.00005237\n",
      "Epoch: 13510/30000, Loss: 0.00005430\n",
      "Epoch: 13520/30000, Loss: 0.00009172\n",
      "Epoch: 13530/30000, Loss: 0.00006912\n",
      "Epoch: 13540/30000, Loss: 0.00005678\n",
      "Epoch: 13550/30000, Loss: 0.00005359\n",
      "Epoch: 13560/30000, Loss: 0.00008319\n",
      "Epoch: 13570/30000, Loss: 0.00011410\n",
      "Epoch: 13580/30000, Loss: 0.00006303\n",
      "Epoch: 13590/30000, Loss: 0.00005773\n",
      "Epoch: 13600/30000, Loss: 0.00005317\n",
      "Epoch: 13610/30000, Loss: 0.00005661\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 13620/30000, Loss: 0.00012508\n",
      "Epoch: 13630/30000, Loss: 0.00007401\n",
      "Epoch: 13640/30000, Loss: 0.00005936\n",
      "Epoch: 13650/30000, Loss: 0.00005123\n",
      "Epoch: 13660/30000, Loss: 0.00005169\n",
      "Epoch: 13670/30000, Loss: 0.00010419\n",
      "Epoch: 13680/30000, Loss: 0.00007488\n",
      "Epoch: 13690/30000, Loss: 0.00006806\n",
      "Epoch: 13700/30000, Loss: 0.00005971\n",
      "Epoch: 13710/30000, Loss: 0.00005393\n",
      "Epoch: 13720/30000, Loss: 0.00005770\n",
      "Epoch: 13730/30000, Loss: 0.00014488\n",
      "Epoch: 13740/30000, Loss: 0.00007720\n",
      "Epoch: 13750/30000, Loss: 0.00005565\n",
      "Epoch: 13760/30000, Loss: 0.00005092\n",
      "Epoch: 13770/30000, Loss: 0.00004985\n",
      "Epoch: 13780/30000, Loss: 0.00005144\n",
      "Epoch: 13790/30000, Loss: 0.00005514\n",
      "Epoch: 13800/30000, Loss: 0.00036582\n",
      "Epoch: 13810/30000, Loss: 0.00008742\n",
      "Epoch: 13820/30000, Loss: 0.00008142\n",
      "Epoch: 13830/30000, Loss: 0.00006352\n",
      "Epoch: 13840/30000, Loss: 0.00005496\n",
      "Epoch: 13850/30000, Loss: 0.00007312\n",
      "Epoch: 13860/30000, Loss: 0.00007299\n",
      "Epoch: 13870/30000, Loss: 0.00005750\n",
      "Epoch: 13880/30000, Loss: 0.00005200\n",
      "Epoch: 13890/30000, Loss: 0.00005008\n",
      "Epoch: 13900/30000, Loss: 0.00005001\n",
      "Epoch: 13910/30000, Loss: 0.00008895\n",
      "Epoch: 13920/30000, Loss: 0.00010080\n",
      "Epoch: 13930/30000, Loss: 0.00006723\n",
      "Epoch: 13940/30000, Loss: 0.00005823\n",
      "Epoch: 13950/30000, Loss: 0.00005130\n",
      "Epoch: 13960/30000, Loss: 0.00005308\n",
      "Epoch: 13970/30000, Loss: 0.00008610\n",
      "Epoch: 13980/30000, Loss: 0.00007844\n",
      "Epoch: 13990/30000, Loss: 0.00006433\n",
      "Epoch: 14000/30000, Loss: 0.00005479\n",
      "Epoch: 14010/30000, Loss: 0.00005199\n",
      "Epoch: 14020/30000, Loss: 0.00005446\n",
      "Epoch: 14030/30000, Loss: 0.00008110\n",
      "Epoch: 14040/30000, Loss: 0.00008592\n",
      "Epoch: 14050/30000, Loss: 0.00013749\n",
      "Epoch: 14060/30000, Loss: 0.00007166\n",
      "Epoch: 14070/30000, Loss: 0.00005554\n",
      "Epoch: 14080/30000, Loss: 0.00004998\n",
      "Epoch: 14090/30000, Loss: 0.00005211\n",
      "Epoch: 14100/30000, Loss: 0.00007636\n",
      "Epoch: 14110/30000, Loss: 0.00017688\n",
      "Epoch: 14120/30000, Loss: 0.00008045\n",
      "Epoch: 14130/30000, Loss: 0.00006191\n",
      "Epoch: 14140/30000, Loss: 0.00005167\n",
      "Epoch: 14150/30000, Loss: 0.00005151\n",
      "Epoch: 14160/30000, Loss: 0.00005145\n",
      "Epoch: 14170/30000, Loss: 0.00006079\n",
      "Epoch: 14180/30000, Loss: 0.00013882\n",
      "Epoch: 14190/30000, Loss: 0.00006434\n",
      "Epoch: 14200/30000, Loss: 0.00005632\n",
      "Epoch: 14210/30000, Loss: 0.00005378\n",
      "Epoch: 14220/30000, Loss: 0.00005868\n",
      "Epoch: 14230/30000, Loss: 0.00012015\n",
      "Epoch: 14240/30000, Loss: 0.00007285\n",
      "Epoch: 14250/30000, Loss: 0.00006012\n",
      "Epoch: 14260/30000, Loss: 0.00007908\n",
      "Epoch: 14270/30000, Loss: 0.00012604\n",
      "Epoch: 14280/30000, Loss: 0.00007195\n",
      "Epoch: 14290/30000, Loss: 0.00005662\n",
      "Epoch: 14300/30000, Loss: 0.00005289\n",
      "Epoch: 14310/30000, Loss: 0.00005468\n",
      "Epoch: 14320/30000, Loss: 0.00008588\n",
      "Epoch: 14330/30000, Loss: 0.00008421\n",
      "Epoch: 14340/30000, Loss: 0.00006377\n",
      "Epoch: 14350/30000, Loss: 0.00006627\n",
      "Epoch: 14360/30000, Loss: 0.00011979\n",
      "Epoch: 14370/30000, Loss: 0.00005477\n",
      "Epoch: 14380/30000, Loss: 0.00005464\n",
      "Epoch: 14390/30000, Loss: 0.00005340\n",
      "Epoch: 14400/30000, Loss: 0.00005087\n",
      "Epoch: 14410/30000, Loss: 0.00005637\n",
      "Epoch: 14420/30000, Loss: 0.00010796\n",
      "Epoch: 14430/30000, Loss: 0.00011954\n",
      "Epoch: 14440/30000, Loss: 0.00007517\n",
      "Epoch: 14450/30000, Loss: 0.00006166\n",
      "Epoch: 14460/30000, Loss: 0.00005188\n",
      "Epoch: 14470/30000, Loss: 0.00005203\n",
      "Epoch: 14480/30000, Loss: 0.00007702\n",
      "Epoch: 14490/30000, Loss: 0.00012119\n",
      "Epoch: 14500/30000, Loss: 0.00007325\n",
      "Epoch: 14510/30000, Loss: 0.00005838\n",
      "Epoch: 14520/30000, Loss: 0.00005333\n",
      "Epoch: 14530/30000, Loss: 0.00006437\n",
      "Epoch: 14540/30000, Loss: 0.00012823\n",
      "Epoch: 14550/30000, Loss: 0.00006026\n",
      "Epoch: 14560/30000, Loss: 0.00005377\n",
      "Epoch: 14570/30000, Loss: 0.00006051\n",
      "Epoch: 14580/30000, Loss: 0.00025639\n",
      "Epoch: 14590/30000, Loss: 0.00009060\n",
      "Epoch: 14600/30000, Loss: 0.00006262\n",
      "Epoch: 14610/30000, Loss: 0.00005484\n",
      "Epoch: 14620/30000, Loss: 0.00005046\n",
      "Epoch: 14630/30000, Loss: 0.00005126\n",
      "Epoch: 14640/30000, Loss: 0.00006428\n",
      "Epoch: 14650/30000, Loss: 0.00011709\n",
      "Epoch: 14660/30000, Loss: 0.00006414\n",
      "Epoch: 14670/30000, Loss: 0.00005690\n",
      "Epoch: 14680/30000, Loss: 0.00005106\n",
      "Epoch: 14690/30000, Loss: 0.00004944\n",
      "Epoch: 14700/30000, Loss: 0.00005024\n",
      "Epoch: 14710/30000, Loss: 0.00008970\n",
      "Epoch: 14720/30000, Loss: 0.00013250\n",
      "Epoch: 14730/30000, Loss: 0.00009722\n",
      "Epoch: 14740/30000, Loss: 0.00006120\n",
      "Epoch: 14750/30000, Loss: 0.00005610\n",
      "Epoch: 14760/30000, Loss: 0.00005538\n",
      "Epoch: 14770/30000, Loss: 0.00005461\n",
      "Epoch: 14780/30000, Loss: 0.00005229\n",
      "Epoch: 14790/30000, Loss: 0.00005357\n",
      "Epoch: 14800/30000, Loss: 0.00005473\n",
      "Epoch: 14810/30000, Loss: 0.00005600\n",
      "Epoch: 14820/30000, Loss: 0.00016027\n",
      "Epoch: 14830/30000, Loss: 0.00013656\n",
      "Epoch: 14840/30000, Loss: 0.00006192\n",
      "Epoch: 14850/30000, Loss: 0.00005718\n",
      "Epoch: 14860/30000, Loss: 0.00005996\n",
      "Epoch: 14870/30000, Loss: 0.00008988\n",
      "Epoch: 14880/30000, Loss: 0.00005402\n",
      "Epoch: 14890/30000, Loss: 0.00005698\n",
      "Epoch: 14900/30000, Loss: 0.00004944\n",
      "Epoch: 14910/30000, Loss: 0.00005172\n",
      "Epoch: 14920/30000, Loss: 0.00007227\n",
      "Epoch: 14930/30000, Loss: 0.00013555\n",
      "Epoch: 14940/30000, Loss: 0.00007152\n",
      "Epoch: 14950/30000, Loss: 0.00005495\n",
      "Epoch: 14960/30000, Loss: 0.00005410\n",
      "Epoch: 14970/30000, Loss: 0.00005370\n",
      "Epoch: 14980/30000, Loss: 0.00009697\n",
      "Epoch: 14990/30000, Loss: 0.00009575\n",
      "Epoch: 15000/30000, Loss: 0.00006821\n",
      "Epoch: 15010/30000, Loss: 0.00005550\n",
      "Epoch: 15020/30000, Loss: 0.00005944\n",
      "Epoch: 15030/30000, Loss: 0.00008407\n",
      "Epoch: 15040/30000, Loss: 0.00006641\n",
      "Epoch: 15050/30000, Loss: 0.00005774\n",
      "Epoch: 15060/30000, Loss: 0.00005971\n",
      "Epoch: 15070/30000, Loss: 0.00010555\n",
      "Epoch: 15080/30000, Loss: 0.00010320\n",
      "Epoch: 15090/30000, Loss: 0.00006859\n",
      "Epoch: 15100/30000, Loss: 0.00006028\n",
      "Epoch: 15110/30000, Loss: 0.00005466\n",
      "Epoch: 15120/30000, Loss: 0.00005434\n",
      "Epoch: 15130/30000, Loss: 0.00010047\n",
      "Epoch: 15140/30000, Loss: 0.00008206\n",
      "Epoch: 15150/30000, Loss: 0.00006282\n",
      "Epoch: 15160/30000, Loss: 0.00005620\n",
      "Epoch: 15170/30000, Loss: 0.00005539\n",
      "Epoch: 15180/30000, Loss: 0.00005737\n",
      "Epoch: 15190/30000, Loss: 0.00007841\n",
      "Epoch: 15200/30000, Loss: 0.00013110\n",
      "Epoch: 15210/30000, Loss: 0.00006267\n",
      "Epoch: 15220/30000, Loss: 0.00006285\n",
      "Epoch: 15230/30000, Loss: 0.00005664\n",
      "Epoch: 15240/30000, Loss: 0.00006538\n",
      "Epoch: 15250/30000, Loss: 0.00011485\n",
      "Epoch: 15260/30000, Loss: 0.00005571\n",
      "Epoch: 15270/30000, Loss: 0.00005259\n",
      "Epoch: 15280/30000, Loss: 0.00005353\n",
      "Epoch: 15290/30000, Loss: 0.00005774\n",
      "Epoch: 15300/30000, Loss: 0.00009064\n",
      "Epoch: 15310/30000, Loss: 0.00009300\n",
      "Epoch: 15320/30000, Loss: 0.00007230\n",
      "Epoch: 15330/30000, Loss: 0.00005451\n",
      "Epoch: 15340/30000, Loss: 0.00005438\n",
      "Epoch: 15350/30000, Loss: 0.00005680\n",
      "Epoch: 15360/30000, Loss: 0.00009321\n",
      "Epoch: 15370/30000, Loss: 0.00024485\n",
      "Epoch: 15380/30000, Loss: 0.00010176\n",
      "Epoch: 15390/30000, Loss: 0.00006752\n",
      "Epoch: 15400/30000, Loss: 0.00005278\n",
      "Epoch: 15410/30000, Loss: 0.00005219\n",
      "Epoch: 15420/30000, Loss: 0.00006530\n",
      "Epoch: 15430/30000, Loss: 0.00005335\n",
      "Epoch: 15440/30000, Loss: 0.00005014\n",
      "Epoch: 15450/30000, Loss: 0.00005045\n",
      "Epoch: 15460/30000, Loss: 0.00007130\n",
      "Epoch: 15470/30000, Loss: 0.00021460\n",
      "Epoch: 15480/30000, Loss: 0.00008841\n",
      "Epoch: 15490/30000, Loss: 0.00005827\n",
      "Epoch: 15500/30000, Loss: 0.00005504\n",
      "Epoch: 15510/30000, Loss: 0.00005247\n",
      "Epoch: 15520/30000, Loss: 0.00005254\n",
      "Epoch: 15530/30000, Loss: 0.00005670\n",
      "Epoch: 15540/30000, Loss: 0.00005985\n",
      "Epoch: 15550/30000, Loss: 0.00010279\n",
      "Epoch: 15560/30000, Loss: 0.00009406\n",
      "Epoch: 15570/30000, Loss: 0.00011786\n",
      "Epoch: 15580/30000, Loss: 0.00006326\n",
      "Epoch: 15590/30000, Loss: 0.00008859\n",
      "Epoch: 15600/30000, Loss: 0.00005246\n",
      "Epoch: 15610/30000, Loss: 0.00005332\n",
      "Epoch: 15620/30000, Loss: 0.00004978\n",
      "Epoch: 15630/30000, Loss: 0.00004974\n",
      "Epoch: 15640/30000, Loss: 0.00005143\n",
      "Epoch: 15650/30000, Loss: 0.00005432\n",
      "Epoch: 15660/30000, Loss: 0.00009649\n",
      "Epoch: 15670/30000, Loss: 0.00007883\n",
      "Epoch: 15680/30000, Loss: 0.00007419\n",
      "Epoch: 15690/30000, Loss: 0.00005254\n",
      "Epoch: 15700/30000, Loss: 0.00005286\n",
      "Epoch: 15710/30000, Loss: 0.00005731\n",
      "Epoch: 15720/30000, Loss: 0.00010212\n",
      "Epoch: 15730/30000, Loss: 0.00005891\n",
      "Epoch: 15740/30000, Loss: 0.00005993\n",
      "Epoch: 15750/30000, Loss: 0.00005235\n",
      "Epoch: 15760/30000, Loss: 0.00005305\n",
      "Epoch: 15770/30000, Loss: 0.00006169\n",
      "Epoch: 15780/30000, Loss: 0.00010869\n",
      "Epoch: 15790/30000, Loss: 0.00006588\n",
      "Epoch: 15800/30000, Loss: 0.00006667\n",
      "Epoch: 15810/30000, Loss: 0.00005594\n",
      "Epoch: 15820/30000, Loss: 0.00005547\n",
      "Epoch: 15830/30000, Loss: 0.00007567\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 15840/30000, Loss: 0.00013740\n",
      "Epoch: 15850/30000, Loss: 0.00014900\n",
      "Epoch: 15860/30000, Loss: 0.00008554\n",
      "Epoch: 15870/30000, Loss: 0.00005890\n",
      "Epoch: 15880/30000, Loss: 0.00005031\n",
      "Epoch: 15890/30000, Loss: 0.00004931\n",
      "Epoch: 15900/30000, Loss: 0.00005094\n",
      "Epoch: 15910/30000, Loss: 0.00007552\n",
      "Epoch: 15920/30000, Loss: 0.00013232\n",
      "Epoch: 15930/30000, Loss: 0.00007687\n",
      "Epoch: 15940/30000, Loss: 0.00005974\n",
      "Epoch: 15950/30000, Loss: 0.00005515\n",
      "Epoch: 15960/30000, Loss: 0.00008444\n",
      "Epoch: 15970/30000, Loss: 0.00007467\n",
      "Epoch: 15980/30000, Loss: 0.00006884\n",
      "Epoch: 15990/30000, Loss: 0.00005191\n",
      "Epoch: 16000/30000, Loss: 0.00004990\n",
      "Epoch: 16010/30000, Loss: 0.00004995\n",
      "Epoch: 16020/30000, Loss: 0.00008569\n",
      "Epoch: 16030/30000, Loss: 0.00011066\n",
      "Epoch: 16040/30000, Loss: 0.00008005\n",
      "Epoch: 16050/30000, Loss: 0.00006237\n",
      "Epoch: 16060/30000, Loss: 0.00005239\n",
      "Epoch: 16070/30000, Loss: 0.00005422\n",
      "Epoch: 16080/30000, Loss: 0.00005142\n",
      "Epoch: 16090/30000, Loss: 0.00005245\n",
      "Epoch: 16100/30000, Loss: 0.00006410\n",
      "Epoch: 16110/30000, Loss: 0.00016903\n",
      "Epoch: 16120/30000, Loss: 0.00006007\n",
      "Epoch: 16130/30000, Loss: 0.00006248\n",
      "Epoch: 16140/30000, Loss: 0.00005136\n",
      "Epoch: 16150/30000, Loss: 0.00004922\n",
      "Epoch: 16160/30000, Loss: 0.00005432\n",
      "Epoch: 16170/30000, Loss: 0.00021033\n",
      "Epoch: 16180/30000, Loss: 0.00010729\n",
      "Epoch: 16190/30000, Loss: 0.00006161\n",
      "Epoch: 16200/30000, Loss: 0.00005339\n",
      "Epoch: 16210/30000, Loss: 0.00005200\n",
      "Epoch: 16220/30000, Loss: 0.00005060\n",
      "Epoch: 16230/30000, Loss: 0.00005224\n",
      "Epoch: 16240/30000, Loss: 0.00005479\n",
      "Epoch: 16250/30000, Loss: 0.00011011\n",
      "Epoch: 16260/30000, Loss: 0.00009488\n",
      "Epoch: 16270/30000, Loss: 0.00006962\n",
      "Epoch: 16280/30000, Loss: 0.00005411\n",
      "Epoch: 16290/30000, Loss: 0.00005116\n",
      "Epoch: 16300/30000, Loss: 0.00005019\n",
      "Epoch: 16310/30000, Loss: 0.00005341\n",
      "Epoch: 16320/30000, Loss: 0.00024407\n",
      "Epoch: 16330/30000, Loss: 0.00011995\n",
      "Epoch: 16340/30000, Loss: 0.00006240\n",
      "Epoch: 16350/30000, Loss: 0.00005756\n",
      "Epoch: 16360/30000, Loss: 0.00005165\n",
      "Epoch: 16370/30000, Loss: 0.00005357\n",
      "Epoch: 16380/30000, Loss: 0.00005303\n",
      "Epoch: 16390/30000, Loss: 0.00005250\n",
      "Epoch: 16400/30000, Loss: 0.00005915\n",
      "Epoch: 16410/30000, Loss: 0.00015487\n",
      "Epoch: 16420/30000, Loss: 0.00010032\n",
      "Epoch: 16430/30000, Loss: 0.00005964\n",
      "Epoch: 16440/30000, Loss: 0.00005620\n",
      "Epoch: 16450/30000, Loss: 0.00005128\n",
      "Epoch: 16460/30000, Loss: 0.00005343\n",
      "Epoch: 16470/30000, Loss: 0.00008810\n",
      "Epoch: 16480/30000, Loss: 0.00007988\n",
      "Epoch: 16490/30000, Loss: 0.00006364\n",
      "Epoch: 16500/30000, Loss: 0.00005423\n",
      "Epoch: 16510/30000, Loss: 0.00005046\n",
      "Epoch: 16520/30000, Loss: 0.00005093\n",
      "Epoch: 16530/30000, Loss: 0.00005299\n",
      "Epoch: 16540/30000, Loss: 0.00009487\n",
      "Epoch: 16550/30000, Loss: 0.00014466\n",
      "Epoch: 16560/30000, Loss: 0.00007353\n",
      "Epoch: 16570/30000, Loss: 0.00005818\n",
      "Epoch: 16580/30000, Loss: 0.00005275\n",
      "Epoch: 16590/30000, Loss: 0.00005060\n",
      "Epoch: 16600/30000, Loss: 0.00004944\n",
      "Epoch: 16610/30000, Loss: 0.00005143\n",
      "Epoch: 16620/30000, Loss: 0.00011106\n",
      "Epoch: 16630/30000, Loss: 0.00008167\n",
      "Epoch: 16640/30000, Loss: 0.00006359\n",
      "Epoch: 16650/30000, Loss: 0.00005625\n",
      "Epoch: 16660/30000, Loss: 0.00015081\n",
      "Epoch: 16670/30000, Loss: 0.00011575\n",
      "Epoch: 16680/30000, Loss: 0.00006854\n",
      "Epoch: 16690/30000, Loss: 0.00006197\n",
      "Epoch: 16700/30000, Loss: 0.00005076\n",
      "Epoch: 16710/30000, Loss: 0.00005202\n",
      "Epoch: 16720/30000, Loss: 0.00005117\n",
      "Epoch: 16730/30000, Loss: 0.00005189\n",
      "Epoch: 16740/30000, Loss: 0.00005376\n",
      "Epoch: 16750/30000, Loss: 0.00005461\n",
      "Epoch: 16760/30000, Loss: 0.00005875\n",
      "Epoch: 16770/30000, Loss: 0.00007885\n",
      "Epoch: 16780/30000, Loss: 0.00020534\n",
      "Epoch: 16790/30000, Loss: 0.00008369\n",
      "Epoch: 16800/30000, Loss: 0.00006233\n",
      "Epoch: 16810/30000, Loss: 0.00005416\n",
      "Epoch: 16820/30000, Loss: 0.00004971\n",
      "Epoch: 16830/30000, Loss: 0.00005004\n",
      "Epoch: 16840/30000, Loss: 0.00005283\n",
      "Epoch: 16850/30000, Loss: 0.00005441\n",
      "Epoch: 16860/30000, Loss: 0.00008198\n",
      "Epoch: 16870/30000, Loss: 0.00015237\n",
      "Epoch: 16880/30000, Loss: 0.00006903\n",
      "Epoch: 16890/30000, Loss: 0.00005835\n",
      "Epoch: 16900/30000, Loss: 0.00005314\n",
      "Epoch: 16910/30000, Loss: 0.00005173\n",
      "Epoch: 16920/30000, Loss: 0.00005178\n",
      "Epoch: 16930/30000, Loss: 0.00005738\n",
      "Epoch: 16940/30000, Loss: 0.00017162\n",
      "Epoch: 16950/30000, Loss: 0.00008801\n",
      "Epoch: 16960/30000, Loss: 0.00005957\n",
      "Epoch: 16970/30000, Loss: 0.00005323\n",
      "Epoch: 16980/30000, Loss: 0.00005084\n",
      "Epoch: 16990/30000, Loss: 0.00006354\n",
      "Epoch: 17000/30000, Loss: 0.00013921\n",
      "Epoch: 17010/30000, Loss: 0.00006850\n",
      "Epoch: 17020/30000, Loss: 0.00005394\n",
      "Epoch: 17030/30000, Loss: 0.00005332\n",
      "Epoch: 17040/30000, Loss: 0.00005264\n",
      "Epoch: 17050/30000, Loss: 0.00005449\n",
      "Epoch: 17060/30000, Loss: 0.00007826\n",
      "Epoch: 17070/30000, Loss: 0.00014550\n",
      "Epoch: 17080/30000, Loss: 0.00008149\n",
      "Epoch: 17090/30000, Loss: 0.00006082\n",
      "Epoch: 17100/30000, Loss: 0.00005217\n",
      "Epoch: 17110/30000, Loss: 0.00005433\n",
      "Epoch: 17120/30000, Loss: 0.00005383\n",
      "Epoch: 17130/30000, Loss: 0.00008240\n",
      "Epoch: 17140/30000, Loss: 0.00017975\n",
      "Epoch: 17150/30000, Loss: 0.00006610\n",
      "Epoch: 17160/30000, Loss: 0.00006106\n",
      "Epoch: 17170/30000, Loss: 0.00005447\n",
      "Epoch: 17180/30000, Loss: 0.00005033\n",
      "Epoch: 17190/30000, Loss: 0.00005266\n",
      "Epoch: 17200/30000, Loss: 0.00011917\n",
      "Epoch: 17210/30000, Loss: 0.00005828\n",
      "Epoch: 17220/30000, Loss: 0.00005727\n",
      "Epoch: 17230/30000, Loss: 0.00005278\n",
      "Epoch: 17240/30000, Loss: 0.00005074\n",
      "Epoch: 17250/30000, Loss: 0.00005103\n",
      "Epoch: 17260/30000, Loss: 0.00005000\n",
      "Epoch: 17270/30000, Loss: 0.00005397\n",
      "Epoch: 17280/30000, Loss: 0.00006008\n",
      "Epoch: 17290/30000, Loss: 0.00010499\n",
      "Epoch: 17300/30000, Loss: 0.00010709\n",
      "Epoch: 17310/30000, Loss: 0.00006447\n",
      "Epoch: 17320/30000, Loss: 0.00006186\n",
      "Epoch: 17330/30000, Loss: 0.00005621\n",
      "Epoch: 17340/30000, Loss: 0.00005213\n",
      "Epoch: 17350/30000, Loss: 0.00005099\n",
      "Epoch: 17360/30000, Loss: 0.00005129\n",
      "Epoch: 17370/30000, Loss: 0.00005330\n",
      "Epoch: 17380/30000, Loss: 0.00007507\n",
      "Epoch: 17390/30000, Loss: 0.00019478\n",
      "Epoch: 17400/30000, Loss: 0.00006999\n",
      "Epoch: 17410/30000, Loss: 0.00006263\n",
      "Epoch: 17420/30000, Loss: 0.00005202\n",
      "Epoch: 17430/30000, Loss: 0.00004951\n",
      "Epoch: 17440/30000, Loss: 0.00007062\n",
      "Epoch: 17450/30000, Loss: 0.00017569\n",
      "Epoch: 17460/30000, Loss: 0.00008671\n",
      "Epoch: 17470/30000, Loss: 0.00006094\n",
      "Epoch: 17480/30000, Loss: 0.00005432\n",
      "Epoch: 17490/30000, Loss: 0.00005061\n",
      "Epoch: 17500/30000, Loss: 0.00004980\n",
      "Epoch: 17510/30000, Loss: 0.00005223\n",
      "Epoch: 17520/30000, Loss: 0.00005643\n",
      "Epoch: 17530/30000, Loss: 0.00007510\n",
      "Epoch: 17540/30000, Loss: 0.00025332\n",
      "Epoch: 17550/30000, Loss: 0.00011695\n",
      "Epoch: 17560/30000, Loss: 0.00005661\n",
      "Epoch: 17570/30000, Loss: 0.00005740\n",
      "Epoch: 17580/30000, Loss: 0.00005165\n",
      "Epoch: 17590/30000, Loss: 0.00004994\n",
      "Epoch: 17600/30000, Loss: 0.00005162\n",
      "Epoch: 17610/30000, Loss: 0.00006364\n",
      "Epoch: 17620/30000, Loss: 0.00006595\n",
      "Epoch: 17630/30000, Loss: 0.00012447\n",
      "Epoch: 17640/30000, Loss: 0.00005673\n",
      "Epoch: 17650/30000, Loss: 0.00005320\n",
      "Epoch: 17660/30000, Loss: 0.00005260\n",
      "Epoch: 17670/30000, Loss: 0.00005725\n",
      "Epoch: 17680/30000, Loss: 0.00019614\n",
      "Epoch: 17690/30000, Loss: 0.00007427\n",
      "Epoch: 17700/30000, Loss: 0.00005695\n",
      "Epoch: 17710/30000, Loss: 0.00005453\n",
      "Epoch: 17720/30000, Loss: 0.00005147\n",
      "Epoch: 17730/30000, Loss: 0.00005198\n",
      "Epoch: 17740/30000, Loss: 0.00006040\n",
      "Epoch: 17750/30000, Loss: 0.00019273\n",
      "Epoch: 17760/30000, Loss: 0.00009629\n",
      "Epoch: 17770/30000, Loss: 0.00006666\n",
      "Epoch: 17780/30000, Loss: 0.00005312\n",
      "Epoch: 17790/30000, Loss: 0.00005100\n",
      "Epoch: 17800/30000, Loss: 0.00005159\n",
      "Epoch: 17810/30000, Loss: 0.00005744\n",
      "Epoch: 17820/30000, Loss: 0.00010954\n",
      "Epoch: 17830/30000, Loss: 0.00007496\n",
      "Epoch: 17840/30000, Loss: 0.00006328\n",
      "Epoch: 17850/30000, Loss: 0.00005312\n",
      "Epoch: 17860/30000, Loss: 0.00005059\n",
      "Epoch: 17870/30000, Loss: 0.00004920\n",
      "Epoch: 17880/30000, Loss: 0.00005364\n",
      "Epoch: 17890/30000, Loss: 0.00020141\n",
      "Epoch: 17900/30000, Loss: 0.00015786\n",
      "Epoch: 17910/30000, Loss: 0.00006497\n",
      "Epoch: 17920/30000, Loss: 0.00006326\n",
      "Epoch: 17930/30000, Loss: 0.00005505\n",
      "Epoch: 17940/30000, Loss: 0.00005207\n",
      "Epoch: 17950/30000, Loss: 0.00005065\n",
      "Epoch: 17960/30000, Loss: 0.00005393\n",
      "Epoch: 17970/30000, Loss: 0.00005954\n",
      "Epoch: 17980/30000, Loss: 0.00012965\n",
      "Epoch: 17990/30000, Loss: 0.00007794\n",
      "Epoch: 18000/30000, Loss: 0.00005803\n",
      "Epoch: 18010/30000, Loss: 0.00005113\n",
      "Epoch: 18020/30000, Loss: 0.00004913\n",
      "Epoch: 18030/30000, Loss: 0.00005476\n",
      "Epoch: 18040/30000, Loss: 0.00014258\n",
      "Epoch: 18050/30000, Loss: 0.00006261\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 18060/30000, Loss: 0.00005759\n",
      "Epoch: 18070/30000, Loss: 0.00005286\n",
      "Epoch: 18080/30000, Loss: 0.00005175\n",
      "Epoch: 18090/30000, Loss: 0.00005116\n",
      "Epoch: 18100/30000, Loss: 0.00005683\n",
      "Epoch: 18110/30000, Loss: 0.00017813\n",
      "Epoch: 18120/30000, Loss: 0.00009482\n",
      "Epoch: 18130/30000, Loss: 0.00006430\n",
      "Epoch: 18140/30000, Loss: 0.00005533\n",
      "Epoch: 18150/30000, Loss: 0.00006118\n",
      "Epoch: 18160/30000, Loss: 0.00012944\n",
      "Epoch: 18170/30000, Loss: 0.00006232\n",
      "Epoch: 18180/30000, Loss: 0.00005190\n",
      "Epoch: 18190/30000, Loss: 0.00005090\n",
      "Epoch: 18200/30000, Loss: 0.00005134\n",
      "Epoch: 18210/30000, Loss: 0.00005685\n",
      "Epoch: 18220/30000, Loss: 0.00007572\n",
      "Epoch: 18230/30000, Loss: 0.00014382\n",
      "Epoch: 18240/30000, Loss: 0.00007648\n",
      "Epoch: 18250/30000, Loss: 0.00005814\n",
      "Epoch: 18260/30000, Loss: 0.00005334\n",
      "Epoch: 18270/30000, Loss: 0.00006010\n",
      "Epoch: 18280/30000, Loss: 0.00008942\n",
      "Epoch: 18290/30000, Loss: 0.00007000\n",
      "Epoch: 18300/30000, Loss: 0.00006338\n",
      "Epoch: 18310/30000, Loss: 0.00007887\n",
      "Epoch: 18320/30000, Loss: 0.00010380\n",
      "Epoch: 18330/30000, Loss: 0.00005648\n",
      "Epoch: 18340/30000, Loss: 0.00005162\n",
      "Epoch: 18350/30000, Loss: 0.00005057\n",
      "Epoch: 18360/30000, Loss: 0.00006025\n",
      "Epoch: 18370/30000, Loss: 0.00014009\n",
      "Epoch: 18380/30000, Loss: 0.00006556\n",
      "Epoch: 18390/30000, Loss: 0.00006087\n",
      "Epoch: 18400/30000, Loss: 0.00005346\n",
      "Epoch: 18410/30000, Loss: 0.00005229\n",
      "Epoch: 18420/30000, Loss: 0.00004943\n",
      "Epoch: 18430/30000, Loss: 0.00005290\n",
      "Epoch: 18440/30000, Loss: 0.00015040\n",
      "Epoch: 18450/30000, Loss: 0.00011699\n",
      "Epoch: 18460/30000, Loss: 0.00007896\n",
      "Epoch: 18470/30000, Loss: 0.00005407\n",
      "Epoch: 18480/30000, Loss: 0.00005274\n",
      "Epoch: 18490/30000, Loss: 0.00004955\n",
      "Epoch: 18500/30000, Loss: 0.00004970\n",
      "Epoch: 18510/30000, Loss: 0.00008315\n",
      "Epoch: 18520/30000, Loss: 0.00011570\n",
      "Epoch: 18530/30000, Loss: 0.00006919\n",
      "Epoch: 18540/30000, Loss: 0.00005826\n",
      "Epoch: 18550/30000, Loss: 0.00004985\n",
      "Epoch: 18560/30000, Loss: 0.00004954\n",
      "Epoch: 18570/30000, Loss: 0.00004941\n",
      "Epoch: 18580/30000, Loss: 0.00005897\n",
      "Epoch: 18590/30000, Loss: 0.00017426\n",
      "Epoch: 18600/30000, Loss: 0.00008176\n",
      "Epoch: 18610/30000, Loss: 0.00006436\n",
      "Epoch: 18620/30000, Loss: 0.00005403\n",
      "Epoch: 18630/30000, Loss: 0.00005183\n",
      "Epoch: 18640/30000, Loss: 0.00005070\n",
      "Epoch: 18650/30000, Loss: 0.00005100\n",
      "Epoch: 18660/30000, Loss: 0.00005851\n",
      "Epoch: 18670/30000, Loss: 0.00017095\n",
      "Epoch: 18680/30000, Loss: 0.00010526\n",
      "Epoch: 18690/30000, Loss: 0.00006249\n",
      "Epoch: 18700/30000, Loss: 0.00005653\n",
      "Epoch: 18710/30000, Loss: 0.00005339\n",
      "Epoch: 18720/30000, Loss: 0.00005430\n",
      "Epoch: 18730/30000, Loss: 0.00009650\n",
      "Epoch: 18740/30000, Loss: 0.00007461\n",
      "Epoch: 18750/30000, Loss: 0.00005797\n",
      "Epoch: 18760/30000, Loss: 0.00005234\n",
      "Epoch: 18770/30000, Loss: 0.00005116\n",
      "Epoch: 18780/30000, Loss: 0.00005095\n",
      "Epoch: 18790/30000, Loss: 0.00005283\n",
      "Epoch: 18800/30000, Loss: 0.00009461\n",
      "Epoch: 18810/30000, Loss: 0.00011660\n",
      "Epoch: 18820/30000, Loss: 0.00007862\n",
      "Epoch: 18830/30000, Loss: 0.00005493\n",
      "Epoch: 18840/30000, Loss: 0.00005273\n",
      "Epoch: 18850/30000, Loss: 0.00005117\n",
      "Epoch: 18860/30000, Loss: 0.00006349\n",
      "Epoch: 18870/30000, Loss: 0.00014086\n",
      "Epoch: 18880/30000, Loss: 0.00007241\n",
      "Epoch: 18890/30000, Loss: 0.00005430\n",
      "Epoch: 18900/30000, Loss: 0.00005106\n",
      "Epoch: 18910/30000, Loss: 0.00005203\n",
      "Epoch: 18920/30000, Loss: 0.00005727\n",
      "Epoch: 18930/30000, Loss: 0.00010845\n",
      "Epoch: 18940/30000, Loss: 0.00008502\n",
      "Epoch: 18950/30000, Loss: 0.00006465\n",
      "Epoch: 18960/30000, Loss: 0.00005505\n",
      "Epoch: 18970/30000, Loss: 0.00005144\n",
      "Epoch: 18980/30000, Loss: 0.00004967\n",
      "Epoch: 18990/30000, Loss: 0.00005771\n",
      "Epoch: 19000/30000, Loss: 0.00021931\n",
      "Epoch: 19010/30000, Loss: 0.00011388\n",
      "Epoch: 19020/30000, Loss: 0.00005905\n",
      "Epoch: 19030/30000, Loss: 0.00005352\n",
      "Epoch: 19040/30000, Loss: 0.00005472\n",
      "Epoch: 19050/30000, Loss: 0.00009473\n",
      "Epoch: 19060/30000, Loss: 0.00006503\n",
      "Epoch: 19070/30000, Loss: 0.00005663\n",
      "Epoch: 19080/30000, Loss: 0.00005298\n",
      "Epoch: 19090/30000, Loss: 0.00004938\n",
      "Epoch: 19100/30000, Loss: 0.00005289\n",
      "Epoch: 19110/30000, Loss: 0.00006377\n",
      "Epoch: 19120/30000, Loss: 0.00014310\n",
      "Epoch: 19130/30000, Loss: 0.00007147\n",
      "Epoch: 19140/30000, Loss: 0.00006053\n",
      "Epoch: 19150/30000, Loss: 0.00005720\n",
      "Epoch: 19160/30000, Loss: 0.00005561\n",
      "Epoch: 19170/30000, Loss: 0.00005215\n",
      "Epoch: 19180/30000, Loss: 0.00006404\n",
      "Epoch: 19190/30000, Loss: 0.00016602\n",
      "Epoch: 19200/30000, Loss: 0.00007180\n",
      "Epoch: 19210/30000, Loss: 0.00005936\n",
      "Epoch: 19220/30000, Loss: 0.00005296\n",
      "Epoch: 19230/30000, Loss: 0.00005111\n",
      "Epoch: 19240/30000, Loss: 0.00004989\n",
      "Epoch: 19250/30000, Loss: 0.00005637\n",
      "Epoch: 19260/30000, Loss: 0.00018545\n",
      "Epoch: 19270/30000, Loss: 0.00010701\n",
      "Epoch: 19280/30000, Loss: 0.00006941\n",
      "Epoch: 19290/30000, Loss: 0.00005375\n",
      "Epoch: 19300/30000, Loss: 0.00005435\n",
      "Epoch: 19310/30000, Loss: 0.00009169\n",
      "Epoch: 19320/30000, Loss: 0.00006175\n",
      "Epoch: 19330/30000, Loss: 0.00005721\n",
      "Epoch: 19340/30000, Loss: 0.00005239\n",
      "Epoch: 19350/30000, Loss: 0.00004990\n",
      "Epoch: 19360/30000, Loss: 0.00005092\n",
      "Epoch: 19370/30000, Loss: 0.00006024\n",
      "Epoch: 19380/30000, Loss: 0.00023226\n",
      "Epoch: 19390/30000, Loss: 0.00011171\n",
      "Epoch: 19400/30000, Loss: 0.00006275\n",
      "Epoch: 19410/30000, Loss: 0.00005712\n",
      "Epoch: 19420/30000, Loss: 0.00005160\n",
      "Epoch: 19430/30000, Loss: 0.00005205\n",
      "Epoch: 19440/30000, Loss: 0.00005193\n",
      "Epoch: 19450/30000, Loss: 0.00005208\n",
      "Epoch: 19460/30000, Loss: 0.00005901\n",
      "Epoch: 19470/30000, Loss: 0.00016782\n",
      "Epoch: 19480/30000, Loss: 0.00009146\n",
      "Epoch: 19490/30000, Loss: 0.00006075\n",
      "Epoch: 19500/30000, Loss: 0.00005169\n",
      "Epoch: 19510/30000, Loss: 0.00005147\n",
      "Epoch: 19520/30000, Loss: 0.00004872\n",
      "Epoch: 19530/30000, Loss: 0.00004873\n",
      "Epoch: 19540/30000, Loss: 0.00004915\n",
      "Epoch: 19550/30000, Loss: 0.00005299\n",
      "Epoch: 19560/30000, Loss: 0.00022852\n",
      "Epoch: 19570/30000, Loss: 0.00018684\n",
      "Epoch: 19580/30000, Loss: 0.00006041\n",
      "Epoch: 19590/30000, Loss: 0.00006367\n",
      "Epoch: 19600/30000, Loss: 0.00005087\n",
      "Epoch: 19610/30000, Loss: 0.00005055\n",
      "Epoch: 19620/30000, Loss: 0.00004918\n",
      "Epoch: 19630/30000, Loss: 0.00005072\n",
      "Epoch: 19640/30000, Loss: 0.00005204\n",
      "Epoch: 19650/30000, Loss: 0.00006000\n",
      "Epoch: 19660/30000, Loss: 0.00005699\n",
      "Epoch: 19670/30000, Loss: 0.00005447\n",
      "Epoch: 19680/30000, Loss: 0.00005792\n",
      "Epoch: 19690/30000, Loss: 0.00015571\n",
      "Epoch: 19700/30000, Loss: 0.00007526\n",
      "Epoch: 19710/30000, Loss: 0.00006258\n",
      "Epoch: 19720/30000, Loss: 0.00005295\n",
      "Epoch: 19730/30000, Loss: 0.00004982\n",
      "Epoch: 19740/30000, Loss: 0.00005772\n",
      "Epoch: 19750/30000, Loss: 0.00021497\n",
      "Epoch: 19760/30000, Loss: 0.00009908\n",
      "Epoch: 19770/30000, Loss: 0.00006403\n",
      "Epoch: 19780/30000, Loss: 0.00005369\n",
      "Epoch: 19790/30000, Loss: 0.00005072\n",
      "Epoch: 19800/30000, Loss: 0.00005200\n",
      "Epoch: 19810/30000, Loss: 0.00005720\n",
      "Epoch: 19820/30000, Loss: 0.00005576\n",
      "Epoch: 19830/30000, Loss: 0.00006017\n",
      "Epoch: 19840/30000, Loss: 0.00006973\n",
      "Epoch: 19850/30000, Loss: 0.00024011\n",
      "Epoch: 19860/30000, Loss: 0.00011325\n",
      "Epoch: 19870/30000, Loss: 0.00006057\n",
      "Epoch: 19880/30000, Loss: 0.00005296\n",
      "Epoch: 19890/30000, Loss: 0.00005130\n",
      "Epoch: 19900/30000, Loss: 0.00005250\n",
      "Epoch: 19910/30000, Loss: 0.00005125\n",
      "Epoch: 19920/30000, Loss: 0.00004983\n",
      "Epoch: 19930/30000, Loss: 0.00005862\n",
      "Epoch: 19940/30000, Loss: 0.00016540\n",
      "Epoch: 19950/30000, Loss: 0.00008095\n",
      "Epoch: 19960/30000, Loss: 0.00006785\n",
      "Epoch: 19970/30000, Loss: 0.00005511\n",
      "Epoch: 19980/30000, Loss: 0.00005158\n",
      "Epoch: 19990/30000, Loss: 0.00010773\n",
      "Epoch: 20000/30000, Loss: 0.00008169\n",
      "Epoch: 20010/30000, Loss: 0.00005951\n",
      "Epoch: 20020/30000, Loss: 0.00005234\n",
      "Epoch: 20030/30000, Loss: 0.00005098\n",
      "Epoch: 20040/30000, Loss: 0.00005071\n",
      "Epoch: 20050/30000, Loss: 0.00005154\n",
      "Epoch: 20060/30000, Loss: 0.00005583\n",
      "Epoch: 20070/30000, Loss: 0.00014944\n",
      "Epoch: 20080/30000, Loss: 0.00007345\n",
      "Epoch: 20090/30000, Loss: 0.00007367\n",
      "Epoch: 20100/30000, Loss: 0.00006317\n",
      "Epoch: 20110/30000, Loss: 0.00005434\n",
      "Epoch: 20120/30000, Loss: 0.00005183\n",
      "Epoch: 20130/30000, Loss: 0.00005241\n",
      "Epoch: 20140/30000, Loss: 0.00005126\n",
      "Epoch: 20150/30000, Loss: 0.00006772\n",
      "Epoch: 20160/30000, Loss: 0.00008202\n",
      "Epoch: 20170/30000, Loss: 0.00008936\n",
      "Epoch: 20180/30000, Loss: 0.00007330\n",
      "Epoch: 20190/30000, Loss: 0.00005605\n",
      "Epoch: 20200/30000, Loss: 0.00005809\n",
      "Epoch: 20210/30000, Loss: 0.00007335\n",
      "Epoch: 20220/30000, Loss: 0.00009346\n",
      "Epoch: 20230/30000, Loss: 0.00005903\n",
      "Epoch: 20240/30000, Loss: 0.00005476\n",
      "Epoch: 20250/30000, Loss: 0.00005818\n",
      "Epoch: 20260/30000, Loss: 0.00010054\n",
      "Epoch: 20270/30000, Loss: 0.00007020\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 20280/30000, Loss: 0.00008664\n",
      "Epoch: 20290/30000, Loss: 0.00007169\n",
      "Epoch: 20300/30000, Loss: 0.00005611\n",
      "Epoch: 20310/30000, Loss: 0.00005381\n",
      "Epoch: 20320/30000, Loss: 0.00005830\n",
      "Epoch: 20330/30000, Loss: 0.00009338\n",
      "Epoch: 20340/30000, Loss: 0.00008235\n",
      "Epoch: 20350/30000, Loss: 0.00006189\n",
      "Epoch: 20360/30000, Loss: 0.00005244\n",
      "Epoch: 20370/30000, Loss: 0.00005192\n",
      "Epoch: 20380/30000, Loss: 0.00005460\n",
      "Epoch: 20390/30000, Loss: 0.00006980\n",
      "Epoch: 20400/30000, Loss: 0.00021575\n",
      "Epoch: 20410/30000, Loss: 0.00010341\n",
      "Epoch: 20420/30000, Loss: 0.00006276\n",
      "Epoch: 20430/30000, Loss: 0.00005255\n",
      "Epoch: 20440/30000, Loss: 0.00005144\n",
      "Epoch: 20450/30000, Loss: 0.00005126\n",
      "Epoch: 20460/30000, Loss: 0.00004956\n",
      "Epoch: 20470/30000, Loss: 0.00007226\n",
      "Epoch: 20480/30000, Loss: 0.00015013\n",
      "Epoch: 20490/30000, Loss: 0.00006548\n",
      "Epoch: 20500/30000, Loss: 0.00005371\n",
      "Epoch: 20510/30000, Loss: 0.00004955\n",
      "Epoch: 20520/30000, Loss: 0.00005027\n",
      "Epoch: 20530/30000, Loss: 0.00008623\n",
      "Epoch: 20540/30000, Loss: 0.00010659\n",
      "Epoch: 20550/30000, Loss: 0.00006651\n",
      "Epoch: 20560/30000, Loss: 0.00005411\n",
      "Epoch: 20570/30000, Loss: 0.00005441\n",
      "Epoch: 20580/30000, Loss: 0.00005542\n",
      "Epoch: 20590/30000, Loss: 0.00005832\n",
      "Epoch: 20600/30000, Loss: 0.00005860\n",
      "Epoch: 20610/30000, Loss: 0.00006114\n",
      "Epoch: 20620/30000, Loss: 0.00011621\n",
      "Epoch: 20630/30000, Loss: 0.00006473\n",
      "Epoch: 20640/30000, Loss: 0.00005715\n",
      "Epoch: 20650/30000, Loss: 0.00005335\n",
      "Epoch: 20660/30000, Loss: 0.00005641\n",
      "Epoch: 20670/30000, Loss: 0.00011251\n",
      "Epoch: 20680/30000, Loss: 0.00006544\n",
      "Epoch: 20690/30000, Loss: 0.00005498\n",
      "Epoch: 20700/30000, Loss: 0.00005085\n",
      "Epoch: 20710/30000, Loss: 0.00006310\n",
      "Epoch: 20720/30000, Loss: 0.00020230\n",
      "Epoch: 20730/30000, Loss: 0.00008089\n",
      "Epoch: 20740/30000, Loss: 0.00005785\n",
      "Epoch: 20750/30000, Loss: 0.00005312\n",
      "Epoch: 20760/30000, Loss: 0.00005110\n",
      "Epoch: 20770/30000, Loss: 0.00005268\n",
      "Epoch: 20780/30000, Loss: 0.00005258\n",
      "Epoch: 20790/30000, Loss: 0.00007475\n",
      "Epoch: 20800/30000, Loss: 0.00014369\n",
      "Epoch: 20810/30000, Loss: 0.00008774\n",
      "Epoch: 20820/30000, Loss: 0.00005646\n",
      "Epoch: 20830/30000, Loss: 0.00007073\n",
      "Epoch: 20840/30000, Loss: 0.00005372\n",
      "Epoch: 20850/30000, Loss: 0.00004977\n",
      "Epoch: 20860/30000, Loss: 0.00006578\n",
      "Epoch: 20870/30000, Loss: 0.00016557\n",
      "Epoch: 20880/30000, Loss: 0.00008487\n",
      "Epoch: 20890/30000, Loss: 0.00005946\n",
      "Epoch: 20900/30000, Loss: 0.00005326\n",
      "Epoch: 20910/30000, Loss: 0.00005052\n",
      "Epoch: 20920/30000, Loss: 0.00005646\n",
      "Epoch: 20930/30000, Loss: 0.00005532\n",
      "Epoch: 20940/30000, Loss: 0.00005456\n",
      "Epoch: 20950/30000, Loss: 0.00008908\n",
      "Epoch: 20960/30000, Loss: 0.00010746\n",
      "Epoch: 20970/30000, Loss: 0.00005976\n",
      "Epoch: 20980/30000, Loss: 0.00006502\n",
      "Epoch: 20990/30000, Loss: 0.00005551\n",
      "Epoch: 21000/30000, Loss: 0.00005388\n",
      "Epoch: 21010/30000, Loss: 0.00005661\n",
      "Epoch: 21020/30000, Loss: 0.00005410\n",
      "Epoch: 21030/30000, Loss: 0.00005362\n",
      "Epoch: 21040/30000, Loss: 0.00005537\n",
      "Epoch: 21050/30000, Loss: 0.00006630\n",
      "Epoch: 21060/30000, Loss: 0.00018787\n",
      "Epoch: 21070/30000, Loss: 0.00009129\n",
      "Epoch: 21080/30000, Loss: 0.00006117\n",
      "Epoch: 21090/30000, Loss: 0.00005032\n",
      "Epoch: 21100/30000, Loss: 0.00004817\n",
      "Epoch: 21110/30000, Loss: 0.00007185\n",
      "Epoch: 21120/30000, Loss: 0.00029130\n",
      "Epoch: 21130/30000, Loss: 0.00008848\n",
      "Epoch: 21140/30000, Loss: 0.00006011\n",
      "Epoch: 21150/30000, Loss: 0.00005265\n",
      "Epoch: 21160/30000, Loss: 0.00005133\n",
      "Epoch: 21170/30000, Loss: 0.00005941\n",
      "Epoch: 21180/30000, Loss: 0.00005597\n",
      "Epoch: 21190/30000, Loss: 0.00005316\n",
      "Epoch: 21200/30000, Loss: 0.00005004\n",
      "Epoch: 21210/30000, Loss: 0.00005142\n",
      "Epoch: 21220/30000, Loss: 0.00005481\n",
      "Epoch: 21230/30000, Loss: 0.00005521\n",
      "Epoch: 21240/30000, Loss: 0.00006837\n",
      "Epoch: 21250/30000, Loss: 0.00028913\n",
      "Epoch: 21260/30000, Loss: 0.00009587\n",
      "Epoch: 21270/30000, Loss: 0.00006436\n",
      "Epoch: 21280/30000, Loss: 0.00006004\n",
      "Epoch: 21290/30000, Loss: 0.00005197\n",
      "Epoch: 21300/30000, Loss: 0.00005318\n",
      "Epoch: 21310/30000, Loss: 0.00005232\n",
      "Epoch: 21320/30000, Loss: 0.00004997\n",
      "Epoch: 21330/30000, Loss: 0.00005281\n",
      "Epoch: 21340/30000, Loss: 0.00007419\n",
      "Epoch: 21350/30000, Loss: 0.00007629\n",
      "Epoch: 21360/30000, Loss: 0.00007337\n",
      "Epoch: 21370/30000, Loss: 0.00005833\n",
      "Epoch: 21380/30000, Loss: 0.00008812\n",
      "Epoch: 21390/30000, Loss: 0.00008904\n",
      "Epoch: 21400/30000, Loss: 0.00005804\n",
      "Epoch: 21410/30000, Loss: 0.00005749\n",
      "Epoch: 21420/30000, Loss: 0.00005398\n",
      "Epoch: 21430/30000, Loss: 0.00005086\n",
      "Epoch: 21440/30000, Loss: 0.00005384\n",
      "Epoch: 21450/30000, Loss: 0.00005881\n",
      "Epoch: 21460/30000, Loss: 0.00008835\n",
      "Epoch: 21470/30000, Loss: 0.00010366\n",
      "Epoch: 21480/30000, Loss: 0.00006711\n",
      "Epoch: 21490/30000, Loss: 0.00005539\n",
      "Epoch: 21500/30000, Loss: 0.00004911\n",
      "Epoch: 21510/30000, Loss: 0.00005114\n",
      "Epoch: 21520/30000, Loss: 0.00009980\n",
      "Epoch: 21530/30000, Loss: 0.00007118\n",
      "Epoch: 21540/30000, Loss: 0.00006119\n",
      "Epoch: 21550/30000, Loss: 0.00005576\n",
      "Epoch: 21560/30000, Loss: 0.00005290\n",
      "Epoch: 21570/30000, Loss: 0.00005191\n",
      "Epoch: 21580/30000, Loss: 0.00005627\n",
      "Epoch: 21590/30000, Loss: 0.00007346\n",
      "Epoch: 21600/30000, Loss: 0.00018152\n",
      "Epoch: 21610/30000, Loss: 0.00008009\n",
      "Epoch: 21620/30000, Loss: 0.00005656\n",
      "Epoch: 21630/30000, Loss: 0.00005141\n",
      "Epoch: 21640/30000, Loss: 0.00005006\n",
      "Epoch: 21650/30000, Loss: 0.00006780\n",
      "Epoch: 21660/30000, Loss: 0.00006548\n",
      "Epoch: 21670/30000, Loss: 0.00014416\n",
      "Epoch: 21680/30000, Loss: 0.00007235\n",
      "Epoch: 21690/30000, Loss: 0.00005696\n",
      "Epoch: 21700/30000, Loss: 0.00005115\n",
      "Epoch: 21710/30000, Loss: 0.00004971\n",
      "Epoch: 21720/30000, Loss: 0.00009106\n",
      "Epoch: 21730/30000, Loss: 0.00011382\n",
      "Epoch: 21740/30000, Loss: 0.00007097\n",
      "Epoch: 21750/30000, Loss: 0.00006251\n",
      "Epoch: 21760/30000, Loss: 0.00008590\n",
      "Epoch: 21770/30000, Loss: 0.00005782\n",
      "Epoch: 21780/30000, Loss: 0.00005388\n",
      "Epoch: 21790/30000, Loss: 0.00005130\n",
      "Epoch: 21800/30000, Loss: 0.00008798\n",
      "Epoch: 21810/30000, Loss: 0.00007003\n",
      "Epoch: 21820/30000, Loss: 0.00005267\n",
      "Epoch: 21830/30000, Loss: 0.00004919\n",
      "Epoch: 21840/30000, Loss: 0.00004840\n",
      "Epoch: 21850/30000, Loss: 0.00004951\n",
      "Epoch: 21860/30000, Loss: 0.00004913\n",
      "Epoch: 21870/30000, Loss: 0.00005221\n",
      "Epoch: 21880/30000, Loss: 0.00006006\n",
      "Epoch: 21890/30000, Loss: 0.00008329\n",
      "Epoch: 21900/30000, Loss: 0.00014263\n",
      "Epoch: 21910/30000, Loss: 0.00006324\n",
      "Epoch: 21920/30000, Loss: 0.00005169\n",
      "Epoch: 21930/30000, Loss: 0.00005003\n",
      "Epoch: 21940/30000, Loss: 0.00004969\n",
      "Epoch: 21950/30000, Loss: 0.00005234\n",
      "Epoch: 21960/30000, Loss: 0.00005393\n",
      "Epoch: 21970/30000, Loss: 0.00008038\n",
      "Epoch: 21980/30000, Loss: 0.00011315\n",
      "Epoch: 21990/30000, Loss: 0.00007574\n",
      "Epoch: 22000/30000, Loss: 0.00005715\n",
      "Epoch: 22010/30000, Loss: 0.00005108\n",
      "Epoch: 22020/30000, Loss: 0.00006498\n",
      "Epoch: 22030/30000, Loss: 0.00015466\n",
      "Epoch: 22040/30000, Loss: 0.00007703\n",
      "Epoch: 22050/30000, Loss: 0.00005990\n",
      "Epoch: 22060/30000, Loss: 0.00005212\n",
      "Epoch: 22070/30000, Loss: 0.00005302\n",
      "Epoch: 22080/30000, Loss: 0.00005348\n",
      "Epoch: 22090/30000, Loss: 0.00005466\n",
      "Epoch: 22100/30000, Loss: 0.00008304\n",
      "Epoch: 22110/30000, Loss: 0.00016213\n",
      "Epoch: 22120/30000, Loss: 0.00007670\n",
      "Epoch: 22130/30000, Loss: 0.00005854\n",
      "Epoch: 22140/30000, Loss: 0.00005308\n",
      "Epoch: 22150/30000, Loss: 0.00005062\n",
      "Epoch: 22160/30000, Loss: 0.00004955\n",
      "Epoch: 22170/30000, Loss: 0.00005142\n",
      "Epoch: 22180/30000, Loss: 0.00006588\n",
      "Epoch: 22190/30000, Loss: 0.00017897\n",
      "Epoch: 22200/30000, Loss: 0.00009732\n",
      "Epoch: 22210/30000, Loss: 0.00007508\n",
      "Epoch: 22220/30000, Loss: 0.00005220\n",
      "Epoch: 22230/30000, Loss: 0.00005134\n",
      "Epoch: 22240/30000, Loss: 0.00005074\n",
      "Epoch: 22250/30000, Loss: 0.00005214\n",
      "Epoch: 22260/30000, Loss: 0.00005304\n",
      "Epoch: 22270/30000, Loss: 0.00005599\n",
      "Epoch: 22280/30000, Loss: 0.00009690\n",
      "Epoch: 22290/30000, Loss: 0.00009202\n",
      "Epoch: 22300/30000, Loss: 0.00006041\n",
      "Epoch: 22310/30000, Loss: 0.00005174\n",
      "Epoch: 22320/30000, Loss: 0.00004926\n",
      "Epoch: 22330/30000, Loss: 0.00006028\n",
      "Epoch: 22340/30000, Loss: 0.00017539\n",
      "Epoch: 22350/30000, Loss: 0.00006996\n",
      "Epoch: 22360/30000, Loss: 0.00006137\n",
      "Epoch: 22370/30000, Loss: 0.00005049\n",
      "Epoch: 22380/30000, Loss: 0.00005069\n",
      "Epoch: 22390/30000, Loss: 0.00005158\n",
      "Epoch: 22400/30000, Loss: 0.00005390\n",
      "Epoch: 22410/30000, Loss: 0.00008179\n",
      "Epoch: 22420/30000, Loss: 0.00017068\n",
      "Epoch: 22430/30000, Loss: 0.00008077\n",
      "Epoch: 22440/30000, Loss: 0.00005654\n",
      "Epoch: 22450/30000, Loss: 0.00005168\n",
      "Epoch: 22460/30000, Loss: 0.00005184\n",
      "Epoch: 22470/30000, Loss: 0.00005208\n",
      "Epoch: 22480/30000, Loss: 0.00005426\n",
      "Epoch: 22490/30000, Loss: 0.00007737\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 22500/30000, Loss: 0.00008396\n",
      "Epoch: 22510/30000, Loss: 0.00005563\n",
      "Epoch: 22520/30000, Loss: 0.00007324\n",
      "Epoch: 22530/30000, Loss: 0.00016941\n",
      "Epoch: 22540/30000, Loss: 0.00007009\n",
      "Epoch: 22550/30000, Loss: 0.00006294\n",
      "Epoch: 22560/30000, Loss: 0.00005195\n",
      "Epoch: 22570/30000, Loss: 0.00005171\n",
      "Epoch: 22580/30000, Loss: 0.00005134\n",
      "Epoch: 22590/30000, Loss: 0.00005194\n",
      "Epoch: 22600/30000, Loss: 0.00005602\n",
      "Epoch: 22610/30000, Loss: 0.00014672\n",
      "Epoch: 22620/30000, Loss: 0.00007801\n",
      "Epoch: 22630/30000, Loss: 0.00005466\n",
      "Epoch: 22640/30000, Loss: 0.00005336\n",
      "Epoch: 22650/30000, Loss: 0.00005015\n",
      "Epoch: 22660/30000, Loss: 0.00004968\n",
      "Epoch: 22670/30000, Loss: 0.00005117\n",
      "Epoch: 22680/30000, Loss: 0.00010879\n",
      "Epoch: 22690/30000, Loss: 0.00008369\n",
      "Epoch: 22700/30000, Loss: 0.00007791\n",
      "Epoch: 22710/30000, Loss: 0.00006290\n",
      "Epoch: 22720/30000, Loss: 0.00005326\n",
      "Epoch: 22730/30000, Loss: 0.00005257\n",
      "Epoch: 22740/30000, Loss: 0.00005144\n",
      "Epoch: 22750/30000, Loss: 0.00005070\n",
      "Epoch: 22760/30000, Loss: 0.00005300\n",
      "Epoch: 22770/30000, Loss: 0.00005278\n",
      "Epoch: 22780/30000, Loss: 0.00005578\n",
      "Epoch: 22790/30000, Loss: 0.00006866\n",
      "Epoch: 22800/30000, Loss: 0.00019648\n",
      "Epoch: 22810/30000, Loss: 0.00009564\n",
      "Epoch: 22820/30000, Loss: 0.00007446\n",
      "Epoch: 22830/30000, Loss: 0.00005369\n",
      "Epoch: 22840/30000, Loss: 0.00005029\n",
      "Epoch: 22850/30000, Loss: 0.00004955\n",
      "Epoch: 22860/30000, Loss: 0.00004821\n",
      "Epoch: 22870/30000, Loss: 0.00004834\n",
      "Epoch: 22880/30000, Loss: 0.00005069\n",
      "Epoch: 22890/30000, Loss: 0.00006471\n",
      "Epoch: 22900/30000, Loss: 0.00022397\n",
      "Epoch: 22910/30000, Loss: 0.00009916\n",
      "Epoch: 22920/30000, Loss: 0.00006286\n",
      "Epoch: 22930/30000, Loss: 0.00005517\n",
      "Epoch: 22940/30000, Loss: 0.00005171\n",
      "Epoch: 22950/30000, Loss: 0.00005107\n",
      "Epoch: 22960/30000, Loss: 0.00005148\n",
      "Epoch: 22970/30000, Loss: 0.00005242\n",
      "Epoch: 22980/30000, Loss: 0.00006423\n",
      "Epoch: 22990/30000, Loss: 0.00015036\n",
      "Epoch: 23000/30000, Loss: 0.00008589\n",
      "Epoch: 23010/30000, Loss: 0.00005902\n",
      "Epoch: 23020/30000, Loss: 0.00005413\n",
      "Epoch: 23030/30000, Loss: 0.00006658\n",
      "Epoch: 23040/30000, Loss: 0.00009955\n",
      "Epoch: 23050/30000, Loss: 0.00005368\n",
      "Epoch: 23060/30000, Loss: 0.00005045\n",
      "Epoch: 23070/30000, Loss: 0.00005018\n",
      "Epoch: 23080/30000, Loss: 0.00005522\n",
      "Epoch: 23090/30000, Loss: 0.00009472\n",
      "Epoch: 23100/30000, Loss: 0.00009347\n",
      "Epoch: 23110/30000, Loss: 0.00006952\n",
      "Epoch: 23120/30000, Loss: 0.00005661\n",
      "Epoch: 23130/30000, Loss: 0.00005314\n",
      "Epoch: 23140/30000, Loss: 0.00005151\n",
      "Epoch: 23150/30000, Loss: 0.00005110\n",
      "Epoch: 23160/30000, Loss: 0.00006578\n",
      "Epoch: 23170/30000, Loss: 0.00014466\n",
      "Epoch: 23180/30000, Loss: 0.00016454\n",
      "Epoch: 23190/30000, Loss: 0.00008413\n",
      "Epoch: 23200/30000, Loss: 0.00005826\n",
      "Epoch: 23210/30000, Loss: 0.00005262\n",
      "Epoch: 23220/30000, Loss: 0.00004979\n",
      "Epoch: 23230/30000, Loss: 0.00004859\n",
      "Epoch: 23240/30000, Loss: 0.00005393\n",
      "Epoch: 23250/30000, Loss: 0.00006321\n",
      "Epoch: 23260/30000, Loss: 0.00012634\n",
      "Epoch: 23270/30000, Loss: 0.00005426\n",
      "Epoch: 23280/30000, Loss: 0.00005516\n",
      "Epoch: 23290/30000, Loss: 0.00005371\n",
      "Epoch: 23300/30000, Loss: 0.00004932\n",
      "Epoch: 23310/30000, Loss: 0.00005411\n",
      "Epoch: 23320/30000, Loss: 0.00005303\n",
      "Epoch: 23330/30000, Loss: 0.00005460\n",
      "Epoch: 23340/30000, Loss: 0.00005991\n",
      "Epoch: 23350/30000, Loss: 0.00011768\n",
      "Epoch: 23360/30000, Loss: 0.00011950\n",
      "Epoch: 23370/30000, Loss: 0.00006949\n",
      "Epoch: 23380/30000, Loss: 0.00005695\n",
      "Epoch: 23390/30000, Loss: 0.00005159\n",
      "Epoch: 23400/30000, Loss: 0.00005026\n",
      "Epoch: 23410/30000, Loss: 0.00004913\n",
      "Epoch: 23420/30000, Loss: 0.00005002\n",
      "Epoch: 23430/30000, Loss: 0.00005201\n",
      "Epoch: 23440/30000, Loss: 0.00011345\n",
      "Epoch: 23450/30000, Loss: 0.00007180\n",
      "Epoch: 23460/30000, Loss: 0.00006989\n",
      "Epoch: 23470/30000, Loss: 0.00006566\n",
      "Epoch: 23480/30000, Loss: 0.00005441\n",
      "Epoch: 23490/30000, Loss: 0.00005095\n",
      "Epoch: 23500/30000, Loss: 0.00004894\n",
      "Epoch: 23510/30000, Loss: 0.00007022\n",
      "Epoch: 23520/30000, Loss: 0.00009122\n",
      "Epoch: 23530/30000, Loss: 0.00007952\n",
      "Epoch: 23540/30000, Loss: 0.00005755\n",
      "Epoch: 23550/30000, Loss: 0.00005152\n",
      "Epoch: 23560/30000, Loss: 0.00005103\n",
      "Epoch: 23570/30000, Loss: 0.00005012\n",
      "Epoch: 23580/30000, Loss: 0.00006751\n",
      "Epoch: 23590/30000, Loss: 0.00020255\n",
      "Epoch: 23600/30000, Loss: 0.00010151\n",
      "Epoch: 23610/30000, Loss: 0.00005742\n",
      "Epoch: 23620/30000, Loss: 0.00005067\n",
      "Epoch: 23630/30000, Loss: 0.00005045\n",
      "Epoch: 23640/30000, Loss: 0.00005094\n",
      "Epoch: 23650/30000, Loss: 0.00005279\n",
      "Epoch: 23660/30000, Loss: 0.00005586\n",
      "Epoch: 23670/30000, Loss: 0.00005825\n",
      "Epoch: 23680/30000, Loss: 0.00006025\n",
      "Epoch: 23690/30000, Loss: 0.00005736\n",
      "Epoch: 23700/30000, Loss: 0.00008281\n",
      "Epoch: 23710/30000, Loss: 0.00012765\n",
      "Epoch: 23720/30000, Loss: 0.00010323\n",
      "Epoch: 23730/30000, Loss: 0.00007212\n",
      "Epoch: 23740/30000, Loss: 0.00005562\n",
      "Epoch: 23750/30000, Loss: 0.00005140\n",
      "Epoch: 23760/30000, Loss: 0.00005017\n",
      "Epoch: 23770/30000, Loss: 0.00004920\n",
      "Epoch: 23780/30000, Loss: 0.00005224\n",
      "Epoch: 23790/30000, Loss: 0.00005508\n",
      "Epoch: 23800/30000, Loss: 0.00005505\n",
      "Epoch: 23810/30000, Loss: 0.00005785\n",
      "Epoch: 23820/30000, Loss: 0.00005886\n",
      "Epoch: 23830/30000, Loss: 0.00005914\n",
      "Epoch: 23840/30000, Loss: 0.00015101\n",
      "Epoch: 23850/30000, Loss: 0.00007303\n",
      "Epoch: 23860/30000, Loss: 0.00005125\n",
      "Epoch: 23870/30000, Loss: 0.00005136\n",
      "Epoch: 23880/30000, Loss: 0.00005051\n",
      "Epoch: 23890/30000, Loss: 0.00004958\n",
      "Epoch: 23900/30000, Loss: 0.00004913\n",
      "Epoch: 23910/30000, Loss: 0.00005323\n",
      "Epoch: 23920/30000, Loss: 0.00005557\n",
      "Epoch: 23930/30000, Loss: 0.00025625\n",
      "Epoch: 23940/30000, Loss: 0.00015860\n",
      "Epoch: 23950/30000, Loss: 0.00006001\n",
      "Epoch: 23960/30000, Loss: 0.00006182\n",
      "Epoch: 23970/30000, Loss: 0.00005353\n",
      "Epoch: 23980/30000, Loss: 0.00005239\n",
      "Epoch: 23990/30000, Loss: 0.00005171\n",
      "Epoch: 24000/30000, Loss: 0.00005236\n",
      "Epoch: 24010/30000, Loss: 0.00005135\n",
      "Epoch: 24020/30000, Loss: 0.00005410\n",
      "Epoch: 24030/30000, Loss: 0.00006442\n",
      "Epoch: 24040/30000, Loss: 0.00007272\n",
      "Epoch: 24050/30000, Loss: 0.00008404\n",
      "Epoch: 24060/30000, Loss: 0.00005691\n",
      "Epoch: 24070/30000, Loss: 0.00006107\n",
      "Epoch: 24080/30000, Loss: 0.00018310\n",
      "Epoch: 24090/30000, Loss: 0.00008425\n",
      "Epoch: 24100/30000, Loss: 0.00005375\n",
      "Epoch: 24110/30000, Loss: 0.00004895\n",
      "Epoch: 24120/30000, Loss: 0.00004985\n",
      "Epoch: 24130/30000, Loss: 0.00005468\n",
      "Epoch: 24140/30000, Loss: 0.00005647\n",
      "Epoch: 24150/30000, Loss: 0.00007743\n",
      "Epoch: 24160/30000, Loss: 0.00012653\n",
      "Epoch: 24170/30000, Loss: 0.00007825\n",
      "Epoch: 24180/30000, Loss: 0.00005591\n",
      "Epoch: 24190/30000, Loss: 0.00005162\n",
      "Epoch: 24200/30000, Loss: 0.00004924\n",
      "Epoch: 24210/30000, Loss: 0.00004992\n",
      "Epoch: 24220/30000, Loss: 0.00006750\n",
      "Epoch: 24230/30000, Loss: 0.00011066\n",
      "Epoch: 24240/30000, Loss: 0.00006634\n",
      "Epoch: 24250/30000, Loss: 0.00007248\n",
      "Epoch: 24260/30000, Loss: 0.00005449\n",
      "Epoch: 24270/30000, Loss: 0.00005062\n",
      "Epoch: 24280/30000, Loss: 0.00005133\n",
      "Epoch: 24290/30000, Loss: 0.00005143\n",
      "Epoch: 24300/30000, Loss: 0.00005147\n",
      "Epoch: 24310/30000, Loss: 0.00005474\n",
      "Epoch: 24320/30000, Loss: 0.00006018\n",
      "Epoch: 24330/30000, Loss: 0.00013125\n",
      "Epoch: 24340/30000, Loss: 0.00008173\n",
      "Epoch: 24350/30000, Loss: 0.00006280\n",
      "Epoch: 24360/30000, Loss: 0.00005401\n",
      "Epoch: 24370/30000, Loss: 0.00005023\n",
      "Epoch: 24380/30000, Loss: 0.00004844\n",
      "Epoch: 24390/30000, Loss: 0.00004901\n",
      "Epoch: 24400/30000, Loss: 0.00005128\n",
      "Epoch: 24410/30000, Loss: 0.00005428\n",
      "Epoch: 24420/30000, Loss: 0.00011279\n",
      "Epoch: 24430/30000, Loss: 0.00007501\n",
      "Epoch: 24440/30000, Loss: 0.00010485\n",
      "Epoch: 24450/30000, Loss: 0.00006184\n",
      "Epoch: 24460/30000, Loss: 0.00005478\n",
      "Epoch: 24470/30000, Loss: 0.00005206\n",
      "Epoch: 24480/30000, Loss: 0.00004971\n",
      "Epoch: 24490/30000, Loss: 0.00005016\n",
      "Epoch: 24500/30000, Loss: 0.00005680\n",
      "Epoch: 24510/30000, Loss: 0.00006618\n",
      "Epoch: 24520/30000, Loss: 0.00008086\n",
      "Epoch: 24530/30000, Loss: 0.00005628\n",
      "Epoch: 24540/30000, Loss: 0.00005091\n",
      "Epoch: 24550/30000, Loss: 0.00004919\n",
      "Epoch: 24560/30000, Loss: 0.00004868\n",
      "Epoch: 24570/30000, Loss: 0.00005100\n",
      "Epoch: 24580/30000, Loss: 0.00009567\n",
      "Epoch: 24590/30000, Loss: 0.00011721\n",
      "Epoch: 24600/30000, Loss: 0.00007970\n",
      "Epoch: 24610/30000, Loss: 0.00005915\n",
      "Epoch: 24620/30000, Loss: 0.00005230\n",
      "Epoch: 24630/30000, Loss: 0.00005124\n",
      "Epoch: 24640/30000, Loss: 0.00004867\n",
      "Epoch: 24650/30000, Loss: 0.00004970\n",
      "Epoch: 24660/30000, Loss: 0.00005478\n",
      "Epoch: 24670/30000, Loss: 0.00013176\n",
      "Epoch: 24680/30000, Loss: 0.00006979\n",
      "Epoch: 24690/30000, Loss: 0.00006201\n",
      "Epoch: 24700/30000, Loss: 0.00005669\n",
      "Epoch: 24710/30000, Loss: 0.00005370\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 24720/30000, Loss: 0.00005082\n",
      "Epoch: 24730/30000, Loss: 0.00005177\n",
      "Epoch: 24740/30000, Loss: 0.00005361\n",
      "Epoch: 24750/30000, Loss: 0.00006209\n",
      "Epoch: 24760/30000, Loss: 0.00014608\n",
      "Epoch: 24770/30000, Loss: 0.00006168\n",
      "Epoch: 24780/30000, Loss: 0.00005785\n",
      "Epoch: 24790/30000, Loss: 0.00005135\n",
      "Epoch: 24800/30000, Loss: 0.00006086\n",
      "Epoch: 24810/30000, Loss: 0.00005577\n",
      "Epoch: 24820/30000, Loss: 0.00006273\n",
      "Epoch: 24830/30000, Loss: 0.00007397\n",
      "Epoch: 24840/30000, Loss: 0.00008416\n",
      "Epoch: 24850/30000, Loss: 0.00008137\n",
      "Epoch: 24860/30000, Loss: 0.00006177\n",
      "Epoch: 24870/30000, Loss: 0.00005125\n",
      "Epoch: 24880/30000, Loss: 0.00005034\n",
      "Epoch: 24890/30000, Loss: 0.00006150\n",
      "Epoch: 24900/30000, Loss: 0.00013570\n",
      "Epoch: 24910/30000, Loss: 0.00008981\n",
      "Epoch: 24920/30000, Loss: 0.00005995\n",
      "Epoch: 24930/30000, Loss: 0.00005512\n",
      "Epoch: 24940/30000, Loss: 0.00007199\n",
      "Epoch: 24950/30000, Loss: 0.00011710\n",
      "Epoch: 24960/30000, Loss: 0.00006391\n",
      "Epoch: 24970/30000, Loss: 0.00005295\n",
      "Epoch: 24980/30000, Loss: 0.00005169\n",
      "Epoch: 24990/30000, Loss: 0.00005117\n",
      "Epoch: 25000/30000, Loss: 0.00005507\n",
      "Epoch: 25010/30000, Loss: 0.00012881\n",
      "Epoch: 25020/30000, Loss: 0.00008296\n",
      "Epoch: 25030/30000, Loss: 0.00007138\n",
      "Epoch: 25040/30000, Loss: 0.00005873\n",
      "Epoch: 25050/30000, Loss: 0.00005143\n",
      "Epoch: 25060/30000, Loss: 0.00004971\n",
      "Epoch: 25070/30000, Loss: 0.00005104\n",
      "Epoch: 25080/30000, Loss: 0.00005691\n",
      "Epoch: 25090/30000, Loss: 0.00015299\n",
      "Epoch: 25100/30000, Loss: 0.00009043\n",
      "Epoch: 25110/30000, Loss: 0.00007243\n",
      "Epoch: 25120/30000, Loss: 0.00005440\n",
      "Epoch: 25130/30000, Loss: 0.00005180\n",
      "Epoch: 25140/30000, Loss: 0.00005748\n",
      "Epoch: 25150/30000, Loss: 0.00011245\n",
      "Epoch: 25160/30000, Loss: 0.00007160\n",
      "Epoch: 25170/30000, Loss: 0.00005698\n",
      "Epoch: 25180/30000, Loss: 0.00005212\n",
      "Epoch: 25190/30000, Loss: 0.00005282\n",
      "Epoch: 25200/30000, Loss: 0.00006045\n",
      "Epoch: 25210/30000, Loss: 0.00005290\n",
      "Epoch: 25220/30000, Loss: 0.00005781\n",
      "Epoch: 25230/30000, Loss: 0.00022568\n",
      "Epoch: 25240/30000, Loss: 0.00010799\n",
      "Epoch: 25250/30000, Loss: 0.00006183\n",
      "Epoch: 25260/30000, Loss: 0.00005198\n",
      "Epoch: 25270/30000, Loss: 0.00005112\n",
      "Epoch: 25280/30000, Loss: 0.00005235\n",
      "Epoch: 25290/30000, Loss: 0.00007221\n",
      "Epoch: 25300/30000, Loss: 0.00005712\n",
      "Epoch: 25310/30000, Loss: 0.00005164\n",
      "Epoch: 25320/30000, Loss: 0.00004921\n",
      "Epoch: 25330/30000, Loss: 0.00006933\n",
      "Epoch: 25340/30000, Loss: 0.00018012\n",
      "Epoch: 25350/30000, Loss: 0.00007519\n",
      "Epoch: 25360/30000, Loss: 0.00006584\n",
      "Epoch: 25370/30000, Loss: 0.00005173\n",
      "Epoch: 25380/30000, Loss: 0.00005059\n",
      "Epoch: 25390/30000, Loss: 0.00004889\n",
      "Epoch: 25400/30000, Loss: 0.00005118\n",
      "Epoch: 25410/30000, Loss: 0.00005629\n",
      "Epoch: 25420/30000, Loss: 0.00015502\n",
      "Epoch: 25430/30000, Loss: 0.00008151\n",
      "Epoch: 25440/30000, Loss: 0.00006977\n",
      "Epoch: 25450/30000, Loss: 0.00005485\n",
      "Epoch: 25460/30000, Loss: 0.00005015\n",
      "Epoch: 25470/30000, Loss: 0.00005129\n",
      "Epoch: 25480/30000, Loss: 0.00004990\n",
      "Epoch: 25490/30000, Loss: 0.00006576\n",
      "Epoch: 25500/30000, Loss: 0.00019197\n",
      "Epoch: 25510/30000, Loss: 0.00007726\n",
      "Epoch: 25520/30000, Loss: 0.00005901\n",
      "Epoch: 25530/30000, Loss: 0.00005254\n",
      "Epoch: 25540/30000, Loss: 0.00005124\n",
      "Epoch: 25550/30000, Loss: 0.00005085\n",
      "Epoch: 25560/30000, Loss: 0.00004976\n",
      "Epoch: 25570/30000, Loss: 0.00005477\n",
      "Epoch: 25580/30000, Loss: 0.00014346\n",
      "Epoch: 25590/30000, Loss: 0.00007712\n",
      "Epoch: 25600/30000, Loss: 0.00006912\n",
      "Epoch: 25610/30000, Loss: 0.00005562\n",
      "Epoch: 25620/30000, Loss: 0.00005252\n",
      "Epoch: 25630/30000, Loss: 0.00005116\n",
      "Epoch: 25640/30000, Loss: 0.00005150\n",
      "Epoch: 25650/30000, Loss: 0.00005409\n",
      "Epoch: 25660/30000, Loss: 0.00005484\n",
      "Epoch: 25670/30000, Loss: 0.00005465\n",
      "Epoch: 25680/30000, Loss: 0.00005444\n",
      "Epoch: 25690/30000, Loss: 0.00007686\n",
      "Epoch: 25700/30000, Loss: 0.00023315\n",
      "Epoch: 25710/30000, Loss: 0.00012530\n",
      "Epoch: 25720/30000, Loss: 0.00007608\n",
      "Epoch: 25730/30000, Loss: 0.00005860\n",
      "Epoch: 25740/30000, Loss: 0.00005172\n",
      "Epoch: 25750/30000, Loss: 0.00005007\n",
      "Epoch: 25760/30000, Loss: 0.00005121\n",
      "Epoch: 25770/30000, Loss: 0.00007028\n",
      "Epoch: 25780/30000, Loss: 0.00005537\n",
      "Epoch: 25790/30000, Loss: 0.00005159\n",
      "Epoch: 25800/30000, Loss: 0.00004867\n",
      "Epoch: 25810/30000, Loss: 0.00004819\n",
      "Epoch: 25820/30000, Loss: 0.00005101\n",
      "Epoch: 25830/30000, Loss: 0.00007432\n",
      "Epoch: 25840/30000, Loss: 0.00016270\n",
      "Epoch: 25850/30000, Loss: 0.00006502\n",
      "Epoch: 25860/30000, Loss: 0.00006373\n",
      "Epoch: 25870/30000, Loss: 0.00004907\n",
      "Epoch: 25880/30000, Loss: 0.00005020\n",
      "Epoch: 25890/30000, Loss: 0.00005064\n",
      "Epoch: 25900/30000, Loss: 0.00005200\n",
      "Epoch: 25910/30000, Loss: 0.00005917\n",
      "Epoch: 25920/30000, Loss: 0.00015384\n",
      "Epoch: 25930/30000, Loss: 0.00007032\n",
      "Epoch: 25940/30000, Loss: 0.00005463\n",
      "Epoch: 25950/30000, Loss: 0.00005027\n",
      "Epoch: 25960/30000, Loss: 0.00004981\n",
      "Epoch: 25970/30000, Loss: 0.00005042\n",
      "Epoch: 25980/30000, Loss: 0.00005108\n",
      "Epoch: 25990/30000, Loss: 0.00006885\n",
      "Epoch: 26000/30000, Loss: 0.00020931\n",
      "Epoch: 26010/30000, Loss: 0.00009330\n",
      "Epoch: 26020/30000, Loss: 0.00005882\n",
      "Epoch: 26030/30000, Loss: 0.00005122\n",
      "Epoch: 26040/30000, Loss: 0.00004914\n",
      "Epoch: 26050/30000, Loss: 0.00004891\n",
      "Epoch: 26060/30000, Loss: 0.00006051\n",
      "Epoch: 26070/30000, Loss: 0.00005987\n",
      "Epoch: 26080/30000, Loss: 0.00005711\n",
      "Epoch: 26090/30000, Loss: 0.00006569\n",
      "Epoch: 26100/30000, Loss: 0.00012320\n",
      "Epoch: 26110/30000, Loss: 0.00010144\n",
      "Epoch: 26120/30000, Loss: 0.00006069\n",
      "Epoch: 26130/30000, Loss: 0.00005086\n",
      "Epoch: 26140/30000, Loss: 0.00004874\n",
      "Epoch: 26150/30000, Loss: 0.00004789\n",
      "Epoch: 26160/30000, Loss: 0.00005379\n",
      "Epoch: 26170/30000, Loss: 0.00017637\n",
      "Epoch: 26180/30000, Loss: 0.00009576\n",
      "Epoch: 26190/30000, Loss: 0.00008328\n",
      "Epoch: 26200/30000, Loss: 0.00005512\n",
      "Epoch: 26210/30000, Loss: 0.00005237\n",
      "Epoch: 26220/30000, Loss: 0.00005270\n",
      "Epoch: 26230/30000, Loss: 0.00005103\n",
      "Epoch: 26240/30000, Loss: 0.00005200\n",
      "Epoch: 26250/30000, Loss: 0.00005201\n",
      "Epoch: 26260/30000, Loss: 0.00005413\n",
      "Epoch: 26270/30000, Loss: 0.00005536\n",
      "Epoch: 26280/30000, Loss: 0.00007504\n",
      "Epoch: 26290/30000, Loss: 0.00024614\n",
      "Epoch: 26300/30000, Loss: 0.00006950\n",
      "Epoch: 26310/30000, Loss: 0.00006956\n",
      "Epoch: 26320/30000, Loss: 0.00005371\n",
      "Epoch: 26330/30000, Loss: 0.00004947\n",
      "Epoch: 26340/30000, Loss: 0.00004994\n",
      "Epoch: 26350/30000, Loss: 0.00004951\n",
      "Epoch: 26360/30000, Loss: 0.00005464\n",
      "Epoch: 26370/30000, Loss: 0.00005432\n",
      "Epoch: 26380/30000, Loss: 0.00005861\n",
      "Epoch: 26390/30000, Loss: 0.00018494\n",
      "Epoch: 26400/30000, Loss: 0.00009125\n",
      "Epoch: 26410/30000, Loss: 0.00006127\n",
      "Epoch: 26420/30000, Loss: 0.00005100\n",
      "Epoch: 26430/30000, Loss: 0.00004925\n",
      "Epoch: 26440/30000, Loss: 0.00006050\n",
      "Epoch: 26450/30000, Loss: 0.00014904\n",
      "Epoch: 26460/30000, Loss: 0.00007612\n",
      "Epoch: 26470/30000, Loss: 0.00005889\n",
      "Epoch: 26480/30000, Loss: 0.00005163\n",
      "Epoch: 26490/30000, Loss: 0.00005130\n",
      "Epoch: 26500/30000, Loss: 0.00005272\n",
      "Epoch: 26510/30000, Loss: 0.00005642\n",
      "Epoch: 26520/30000, Loss: 0.00006756\n",
      "Epoch: 26530/30000, Loss: 0.00015363\n",
      "Epoch: 26540/30000, Loss: 0.00006607\n",
      "Epoch: 26550/30000, Loss: 0.00006117\n",
      "Epoch: 26560/30000, Loss: 0.00005336\n",
      "Epoch: 26570/30000, Loss: 0.00005059\n",
      "Epoch: 26580/30000, Loss: 0.00005134\n",
      "Epoch: 26590/30000, Loss: 0.00005302\n",
      "Epoch: 26600/30000, Loss: 0.00005462\n",
      "Epoch: 26610/30000, Loss: 0.00005879\n",
      "Epoch: 26620/30000, Loss: 0.00016310\n",
      "Epoch: 26630/30000, Loss: 0.00010388\n",
      "Epoch: 26640/30000, Loss: 0.00007307\n",
      "Epoch: 26650/30000, Loss: 0.00005208\n",
      "Epoch: 26660/30000, Loss: 0.00005486\n",
      "Epoch: 26670/30000, Loss: 0.00005633\n",
      "Epoch: 26680/30000, Loss: 0.00005262\n",
      "Epoch: 26690/30000, Loss: 0.00006236\n",
      "Epoch: 26700/30000, Loss: 0.00011795\n",
      "Epoch: 26710/30000, Loss: 0.00005811\n",
      "Epoch: 26720/30000, Loss: 0.00005125\n",
      "Epoch: 26730/30000, Loss: 0.00005013\n",
      "Epoch: 26740/30000, Loss: 0.00006114\n",
      "Epoch: 26750/30000, Loss: 0.00009574\n",
      "Epoch: 26760/30000, Loss: 0.00010466\n",
      "Epoch: 26770/30000, Loss: 0.00006767\n",
      "Epoch: 26780/30000, Loss: 0.00005486\n",
      "Epoch: 26790/30000, Loss: 0.00006510\n",
      "Epoch: 26800/30000, Loss: 0.00005662\n",
      "Epoch: 26810/30000, Loss: 0.00006406\n",
      "Epoch: 26820/30000, Loss: 0.00012461\n",
      "Epoch: 26830/30000, Loss: 0.00005389\n",
      "Epoch: 26840/30000, Loss: 0.00005141\n",
      "Epoch: 26850/30000, Loss: 0.00005254\n",
      "Epoch: 26860/30000, Loss: 0.00005049\n",
      "Epoch: 26870/30000, Loss: 0.00005196\n",
      "Epoch: 26880/30000, Loss: 0.00006877\n",
      "Epoch: 26890/30000, Loss: 0.00021558\n",
      "Epoch: 26900/30000, Loss: 0.00009834\n",
      "Epoch: 26910/30000, Loss: 0.00006482\n",
      "Epoch: 26920/30000, Loss: 0.00005838\n",
      "Epoch: 26930/30000, Loss: 0.00005022\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 26940/30000, Loss: 0.00004962\n",
      "Epoch: 26950/30000, Loss: 0.00004915\n",
      "Epoch: 26960/30000, Loss: 0.00005025\n",
      "Epoch: 26970/30000, Loss: 0.00007136\n",
      "Epoch: 26980/30000, Loss: 0.00014359\n",
      "Epoch: 26990/30000, Loss: 0.00006711\n",
      "Epoch: 27000/30000, Loss: 0.00005234\n",
      "Epoch: 27010/30000, Loss: 0.00005109\n",
      "Epoch: 27020/30000, Loss: 0.00006517\n",
      "Epoch: 27030/30000, Loss: 0.00011650\n",
      "Epoch: 27040/30000, Loss: 0.00006187\n",
      "Epoch: 27050/30000, Loss: 0.00005212\n",
      "Epoch: 27060/30000, Loss: 0.00005044\n",
      "Epoch: 27070/30000, Loss: 0.00004847\n",
      "Epoch: 27080/30000, Loss: 0.00005052\n",
      "Epoch: 27090/30000, Loss: 0.00005855\n",
      "Epoch: 27100/30000, Loss: 0.00022028\n",
      "Epoch: 27110/30000, Loss: 0.00012855\n",
      "Epoch: 27120/30000, Loss: 0.00007124\n",
      "Epoch: 27130/30000, Loss: 0.00005378\n",
      "Epoch: 27140/30000, Loss: 0.00005085\n",
      "Epoch: 27150/30000, Loss: 0.00004983\n",
      "Epoch: 27160/30000, Loss: 0.00004981\n",
      "Epoch: 27170/30000, Loss: 0.00005051\n",
      "Epoch: 27180/30000, Loss: 0.00005435\n",
      "Epoch: 27190/30000, Loss: 0.00005982\n",
      "Epoch: 27200/30000, Loss: 0.00008696\n",
      "Epoch: 27210/30000, Loss: 0.00007571\n",
      "Epoch: 27220/30000, Loss: 0.00009633\n",
      "Epoch: 27230/30000, Loss: 0.00006874\n",
      "Epoch: 27240/30000, Loss: 0.00006146\n",
      "Epoch: 27250/30000, Loss: 0.00005158\n",
      "Epoch: 27260/30000, Loss: 0.00004948\n",
      "Epoch: 27270/30000, Loss: 0.00004979\n",
      "Epoch: 27280/30000, Loss: 0.00005088\n",
      "Epoch: 27290/30000, Loss: 0.00007548\n",
      "Epoch: 27300/30000, Loss: 0.00019070\n",
      "Epoch: 27310/30000, Loss: 0.00006679\n",
      "Epoch: 27320/30000, Loss: 0.00006549\n",
      "Epoch: 27330/30000, Loss: 0.00005215\n",
      "Epoch: 27340/30000, Loss: 0.00005159\n",
      "Epoch: 27350/30000, Loss: 0.00005094\n",
      "Epoch: 27360/30000, Loss: 0.00005098\n",
      "Epoch: 27370/30000, Loss: 0.00005260\n",
      "Epoch: 27380/30000, Loss: 0.00006030\n",
      "Epoch: 27390/30000, Loss: 0.00005848\n",
      "Epoch: 27400/30000, Loss: 0.00011285\n",
      "Epoch: 27410/30000, Loss: 0.00006688\n",
      "Epoch: 27420/30000, Loss: 0.00005872\n",
      "Epoch: 27430/30000, Loss: 0.00005243\n",
      "Epoch: 27440/30000, Loss: 0.00004829\n",
      "Epoch: 27450/30000, Loss: 0.00004999\n",
      "Epoch: 27460/30000, Loss: 0.00015344\n",
      "Epoch: 27470/30000, Loss: 0.00009113\n",
      "Epoch: 27480/30000, Loss: 0.00005888\n",
      "Epoch: 27490/30000, Loss: 0.00005351\n",
      "Epoch: 27500/30000, Loss: 0.00004959\n",
      "Epoch: 27510/30000, Loss: 0.00005313\n",
      "Epoch: 27520/30000, Loss: 0.00005302\n",
      "Epoch: 27530/30000, Loss: 0.00005494\n",
      "Epoch: 27540/30000, Loss: 0.00006101\n",
      "Epoch: 27550/30000, Loss: 0.00014230\n",
      "Epoch: 27560/30000, Loss: 0.00006164\n",
      "Epoch: 27570/30000, Loss: 0.00005525\n",
      "Epoch: 27580/30000, Loss: 0.00005115\n",
      "Epoch: 27590/30000, Loss: 0.00004940\n",
      "Epoch: 27600/30000, Loss: 0.00004984\n",
      "Epoch: 27610/30000, Loss: 0.00005071\n",
      "Epoch: 27620/30000, Loss: 0.00005280\n",
      "Epoch: 27630/30000, Loss: 0.00007499\n",
      "Epoch: 27640/30000, Loss: 0.00018674\n",
      "Epoch: 27650/30000, Loss: 0.00007837\n",
      "Epoch: 27660/30000, Loss: 0.00005567\n",
      "Epoch: 27670/30000, Loss: 0.00005429\n",
      "Epoch: 27680/30000, Loss: 0.00005015\n",
      "Epoch: 27690/30000, Loss: 0.00005129\n",
      "Epoch: 27700/30000, Loss: 0.00005154\n",
      "Epoch: 27710/30000, Loss: 0.00006221\n",
      "Epoch: 27720/30000, Loss: 0.00017074\n",
      "Epoch: 27730/30000, Loss: 0.00008562\n",
      "Epoch: 27740/30000, Loss: 0.00006360\n",
      "Epoch: 27750/30000, Loss: 0.00005180\n",
      "Epoch: 27760/30000, Loss: 0.00004976\n",
      "Epoch: 27770/30000, Loss: 0.00006606\n",
      "Epoch: 27780/30000, Loss: 0.00015617\n",
      "Epoch: 27790/30000, Loss: 0.00007549\n",
      "Epoch: 27800/30000, Loss: 0.00005907\n",
      "Epoch: 27810/30000, Loss: 0.00005236\n",
      "Epoch: 27820/30000, Loss: 0.00004988\n",
      "Epoch: 27830/30000, Loss: 0.00005232\n",
      "Epoch: 27840/30000, Loss: 0.00005246\n",
      "Epoch: 27850/30000, Loss: 0.00006226\n",
      "Epoch: 27860/30000, Loss: 0.00013696\n",
      "Epoch: 27870/30000, Loss: 0.00006611\n",
      "Epoch: 27880/30000, Loss: 0.00006046\n",
      "Epoch: 27890/30000, Loss: 0.00005345\n",
      "Epoch: 27900/30000, Loss: 0.00004886\n",
      "Epoch: 27910/30000, Loss: 0.00004937\n",
      "Epoch: 27920/30000, Loss: 0.00004922\n",
      "Epoch: 27930/30000, Loss: 0.00005153\n",
      "Epoch: 27940/30000, Loss: 0.00005668\n",
      "Epoch: 27950/30000, Loss: 0.00014715\n",
      "Epoch: 27960/30000, Loss: 0.00006791\n",
      "Epoch: 27970/30000, Loss: 0.00006754\n",
      "Epoch: 27980/30000, Loss: 0.00005559\n",
      "Epoch: 27990/30000, Loss: 0.00005055\n",
      "Epoch: 28000/30000, Loss: 0.00005216\n",
      "Epoch: 28010/30000, Loss: 0.00006254\n",
      "Epoch: 28020/30000, Loss: 0.00009820\n",
      "Epoch: 28030/30000, Loss: 0.00005403\n",
      "Epoch: 28040/30000, Loss: 0.00005273\n",
      "Epoch: 28050/30000, Loss: 0.00006722\n",
      "Epoch: 28060/30000, Loss: 0.00013202\n",
      "Epoch: 28070/30000, Loss: 0.00006351\n",
      "Epoch: 28080/30000, Loss: 0.00005363\n",
      "Epoch: 28090/30000, Loss: 0.00006088\n",
      "Epoch: 28100/30000, Loss: 0.00005384\n",
      "Epoch: 28110/30000, Loss: 0.00005257\n",
      "Epoch: 28120/30000, Loss: 0.00006469\n",
      "Epoch: 28130/30000, Loss: 0.00020737\n",
      "Epoch: 28140/30000, Loss: 0.00008619\n",
      "Epoch: 28150/30000, Loss: 0.00005508\n",
      "Epoch: 28160/30000, Loss: 0.00005148\n",
      "Epoch: 28170/30000, Loss: 0.00005220\n",
      "Epoch: 28180/30000, Loss: 0.00007153\n",
      "Epoch: 28190/30000, Loss: 0.00005585\n",
      "Epoch: 28200/30000, Loss: 0.00005202\n",
      "Epoch: 28210/30000, Loss: 0.00006814\n",
      "Epoch: 28220/30000, Loss: 0.00008104\n",
      "Epoch: 28230/30000, Loss: 0.00009349\n",
      "Epoch: 28240/30000, Loss: 0.00005604\n",
      "Epoch: 28250/30000, Loss: 0.00005564\n",
      "Epoch: 28260/30000, Loss: 0.00005262\n",
      "Epoch: 28270/30000, Loss: 0.00005607\n",
      "Epoch: 28280/30000, Loss: 0.00010237\n",
      "Epoch: 28290/30000, Loss: 0.00006817\n",
      "Epoch: 28300/30000, Loss: 0.00006092\n",
      "Epoch: 28310/30000, Loss: 0.00005740\n",
      "Epoch: 28320/30000, Loss: 0.00005290\n",
      "Epoch: 28330/30000, Loss: 0.00005298\n",
      "Epoch: 28340/30000, Loss: 0.00006690\n",
      "Epoch: 28350/30000, Loss: 0.00017567\n",
      "Epoch: 28360/30000, Loss: 0.00008879\n",
      "Epoch: 28370/30000, Loss: 0.00006811\n",
      "Epoch: 28380/30000, Loss: 0.00005759\n",
      "Epoch: 28390/30000, Loss: 0.00005181\n",
      "Epoch: 28400/30000, Loss: 0.00004927\n",
      "Epoch: 28410/30000, Loss: 0.00005403\n",
      "Epoch: 28420/30000, Loss: 0.00012028\n",
      "Epoch: 28430/30000, Loss: 0.00007392\n",
      "Epoch: 28440/30000, Loss: 0.00006941\n",
      "Epoch: 28450/30000, Loss: 0.00005398\n",
      "Epoch: 28460/30000, Loss: 0.00004857\n",
      "Epoch: 28470/30000, Loss: 0.00005088\n",
      "Epoch: 28480/30000, Loss: 0.00006737\n",
      "Epoch: 28490/30000, Loss: 0.00016104\n",
      "Epoch: 28500/30000, Loss: 0.00007968\n",
      "Epoch: 28510/30000, Loss: 0.00007393\n",
      "Epoch: 28520/30000, Loss: 0.00005430\n",
      "Epoch: 28530/30000, Loss: 0.00005140\n",
      "Epoch: 28540/30000, Loss: 0.00004927\n",
      "Epoch: 28550/30000, Loss: 0.00005021\n",
      "Epoch: 28560/30000, Loss: 0.00005174\n",
      "Epoch: 28570/30000, Loss: 0.00006242\n",
      "Epoch: 28580/30000, Loss: 0.00021800\n",
      "Epoch: 28590/30000, Loss: 0.00010444\n",
      "Epoch: 28600/30000, Loss: 0.00006235\n",
      "Epoch: 28610/30000, Loss: 0.00005698\n",
      "Epoch: 28620/30000, Loss: 0.00005362\n",
      "Epoch: 28630/30000, Loss: 0.00005255\n",
      "Epoch: 28640/30000, Loss: 0.00005362\n",
      "Epoch: 28650/30000, Loss: 0.00005327\n",
      "Epoch: 28660/30000, Loss: 0.00005789\n",
      "Epoch: 28670/30000, Loss: 0.00011161\n",
      "Epoch: 28680/30000, Loss: 0.00007150\n",
      "Epoch: 28690/30000, Loss: 0.00006458\n",
      "Epoch: 28700/30000, Loss: 0.00005225\n",
      "Epoch: 28710/30000, Loss: 0.00004839\n",
      "Epoch: 28720/30000, Loss: 0.00006219\n",
      "Epoch: 28730/30000, Loss: 0.00017752\n",
      "Epoch: 28740/30000, Loss: 0.00009589\n",
      "Epoch: 28750/30000, Loss: 0.00006126\n",
      "Epoch: 28760/30000, Loss: 0.00005306\n",
      "Epoch: 28770/30000, Loss: 0.00004916\n",
      "Epoch: 28780/30000, Loss: 0.00006968\n",
      "Epoch: 28790/30000, Loss: 0.00005811\n",
      "Epoch: 28800/30000, Loss: 0.00005389\n",
      "Epoch: 28810/30000, Loss: 0.00004988\n",
      "Epoch: 28820/30000, Loss: 0.00005161\n",
      "Epoch: 28830/30000, Loss: 0.00016183\n",
      "Epoch: 28840/30000, Loss: 0.00008790\n",
      "Epoch: 28850/30000, Loss: 0.00006711\n",
      "Epoch: 28860/30000, Loss: 0.00005233\n",
      "Epoch: 28870/30000, Loss: 0.00005121\n",
      "Epoch: 28880/30000, Loss: 0.00005783\n",
      "Epoch: 28890/30000, Loss: 0.00006707\n",
      "Epoch: 28900/30000, Loss: 0.00005579\n",
      "Epoch: 28910/30000, Loss: 0.00005282\n",
      "Epoch: 28920/30000, Loss: 0.00009112\n",
      "Epoch: 28930/30000, Loss: 0.00008467\n",
      "Epoch: 28940/30000, Loss: 0.00006655\n",
      "Epoch: 28950/30000, Loss: 0.00005473\n",
      "Epoch: 28960/30000, Loss: 0.00004909\n",
      "Epoch: 28970/30000, Loss: 0.00004921\n",
      "Epoch: 28980/30000, Loss: 0.00005219\n",
      "Epoch: 28990/30000, Loss: 0.00005676\n",
      "Epoch: 29000/30000, Loss: 0.00015349\n",
      "Epoch: 29010/30000, Loss: 0.00007552\n",
      "Epoch: 29020/30000, Loss: 0.00006868\n",
      "Epoch: 29030/30000, Loss: 0.00005762\n",
      "Epoch: 29040/30000, Loss: 0.00005216\n",
      "Epoch: 29050/30000, Loss: 0.00004911\n",
      "Epoch: 29060/30000, Loss: 0.00004973\n",
      "Epoch: 29070/30000, Loss: 0.00005024\n",
      "Epoch: 29080/30000, Loss: 0.00006052\n",
      "Epoch: 29090/30000, Loss: 0.00023802\n",
      "Epoch: 29100/30000, Loss: 0.00007648\n",
      "Epoch: 29110/30000, Loss: 0.00006806\n",
      "Epoch: 29120/30000, Loss: 0.00006119\n",
      "Epoch: 29130/30000, Loss: 0.00005281\n",
      "Epoch: 29140/30000, Loss: 0.00004970\n",
      "Epoch: 29150/30000, Loss: 0.00004981\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 29160/30000, Loss: 0.00009303\n",
      "Epoch: 29170/30000, Loss: 0.00007655\n",
      "Epoch: 29180/30000, Loss: 0.00006171\n",
      "Epoch: 29190/30000, Loss: 0.00005248\n",
      "Epoch: 29200/30000, Loss: 0.00004972\n",
      "Epoch: 29210/30000, Loss: 0.00004975\n",
      "Epoch: 29220/30000, Loss: 0.00004943\n",
      "Epoch: 29230/30000, Loss: 0.00007389\n",
      "Epoch: 29240/30000, Loss: 0.00015961\n",
      "Epoch: 29250/30000, Loss: 0.00007347\n",
      "Epoch: 29260/30000, Loss: 0.00005507\n",
      "Epoch: 29270/30000, Loss: 0.00005375\n",
      "Epoch: 29280/30000, Loss: 0.00006233\n",
      "Epoch: 29290/30000, Loss: 0.00005517\n",
      "Epoch: 29300/30000, Loss: 0.00005162\n",
      "Epoch: 29310/30000, Loss: 0.00005650\n",
      "Epoch: 29320/30000, Loss: 0.00009352\n",
      "Epoch: 29330/30000, Loss: 0.00005856\n",
      "Epoch: 29340/30000, Loss: 0.00006190\n",
      "Epoch: 29350/30000, Loss: 0.00021098\n",
      "Epoch: 29360/30000, Loss: 0.00008717\n",
      "Epoch: 29370/30000, Loss: 0.00005436\n",
      "Epoch: 29380/30000, Loss: 0.00005232\n",
      "Epoch: 29390/30000, Loss: 0.00005157\n",
      "Epoch: 29400/30000, Loss: 0.00005642\n",
      "Epoch: 29410/30000, Loss: 0.00005601\n",
      "Epoch: 29420/30000, Loss: 0.00005877\n",
      "Epoch: 29430/30000, Loss: 0.00011771\n",
      "Epoch: 29440/30000, Loss: 0.00008882\n",
      "Epoch: 29450/30000, Loss: 0.00006410\n",
      "Epoch: 29460/30000, Loss: 0.00005665\n",
      "Epoch: 29470/30000, Loss: 0.00005849\n",
      "Epoch: 29480/30000, Loss: 0.00005122\n",
      "Epoch: 29490/30000, Loss: 0.00004861\n",
      "Epoch: 29500/30000, Loss: 0.00004875\n",
      "Epoch: 29510/30000, Loss: 0.00006083\n",
      "Epoch: 29520/30000, Loss: 0.00016055\n",
      "Epoch: 29530/30000, Loss: 0.00007670\n",
      "Epoch: 29540/30000, Loss: 0.00006032\n",
      "Epoch: 29550/30000, Loss: 0.00005265\n",
      "Epoch: 29560/30000, Loss: 0.00005004\n",
      "Epoch: 29570/30000, Loss: 0.00005298\n",
      "Epoch: 29580/30000, Loss: 0.00005428\n",
      "Epoch: 29590/30000, Loss: 0.00006499\n",
      "Epoch: 29600/30000, Loss: 0.00017610\n",
      "Epoch: 29610/30000, Loss: 0.00008287\n",
      "Epoch: 29620/30000, Loss: 0.00006644\n",
      "Epoch: 29630/30000, Loss: 0.00005527\n",
      "Epoch: 29640/30000, Loss: 0.00004903\n",
      "Epoch: 29650/30000, Loss: 0.00005004\n",
      "Epoch: 29660/30000, Loss: 0.00004911\n",
      "Epoch: 29670/30000, Loss: 0.00005249\n",
      "Epoch: 29680/30000, Loss: 0.00012642\n",
      "Epoch: 29690/30000, Loss: 0.00007511\n",
      "Epoch: 29700/30000, Loss: 0.00006830\n",
      "Epoch: 29710/30000, Loss: 0.00005198\n",
      "Epoch: 29720/30000, Loss: 0.00004817\n",
      "Epoch: 29730/30000, Loss: 0.00005428\n",
      "Epoch: 29740/30000, Loss: 0.00022941\n",
      "Epoch: 29750/30000, Loss: 0.00010942\n",
      "Epoch: 29760/30000, Loss: 0.00006293\n",
      "Epoch: 29770/30000, Loss: 0.00005112\n",
      "Epoch: 29780/30000, Loss: 0.00005073\n",
      "Epoch: 29790/30000, Loss: 0.00005364\n",
      "Epoch: 29800/30000, Loss: 0.00005133\n",
      "Epoch: 29810/30000, Loss: 0.00005951\n",
      "Epoch: 29820/30000, Loss: 0.00005485\n",
      "Epoch: 29830/30000, Loss: 0.00005129\n",
      "Epoch: 29840/30000, Loss: 0.00009126\n",
      "Epoch: 29850/30000, Loss: 0.00011336\n",
      "Epoch: 29860/30000, Loss: 0.00006039\n",
      "Epoch: 29870/30000, Loss: 0.00006735\n",
      "Epoch: 29880/30000, Loss: 0.00005692\n",
      "Epoch: 29890/30000, Loss: 0.00005070\n",
      "Epoch: 29900/30000, Loss: 0.00004848\n",
      "Epoch: 29910/30000, Loss: 0.00005103\n",
      "Epoch: 29920/30000, Loss: 0.00005176\n",
      "Epoch: 29930/30000, Loss: 0.00005230\n",
      "Epoch: 29940/30000, Loss: 0.00005522\n",
      "Epoch: 29950/30000, Loss: 0.00005761\n",
      "Epoch: 29960/30000, Loss: 0.00011922\n",
      "Epoch: 29970/30000, Loss: 0.00007747\n",
      "Epoch: 29980/30000, Loss: 0.00007549\n",
      "Epoch: 29990/30000, Loss: 0.00005930\n",
      "Epoch: 30000/30000, Loss: 0.00005091\n"
     ]
    }
   ],
   "source": [
    "# Create LSTM instance\n",
    "lstm = LSTM(input_size, hidden_size, output_size)\n",
    "\n",
    "# Loss and optimizer\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(lstm.parameters(), lr=0.01)\n",
    "\n",
    "# Training loop\n",
    "for epoch in range(num_epochs):\n",
    "    # Set initial hidden state and cell state\n",
    "    hidden = torch.zeros(1, batch_size, hidden_size)\n",
    "    cell = torch.zeros(1, batch_size, hidden_size)\n",
    "\n",
    "    # Forward pass\n",
    "    output, (hidden, cell) = lstm(input_tensor, (hidden, cell))\n",
    "    loss = criterion(output, target_tensor)\n",
    "\n",
    "    # Backward and optimize\n",
    "    optimizer.zero_grad()\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "\n",
    "    # Print progress\n",
    "    if (epoch+1) % 10 == 0:\n",
    "        print(f'Epoch: {epoch+1}/{num_epochs}, Loss: {loss.item():.8f}')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c2ec96ee",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 256)\n",
      "(1, 201)\n",
      "(201, 256)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/data/localhome/tkapoor/.local/lib/python3.8/site-packages/numpy/ma/core.py:2820: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  _data = np.array(data, dtype=dtype, copy=copy,\n",
      "/usr/local/lib/python3.8/dist-packages/matplotlib/contour.py:1180: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  self.levels = np.asarray(levels_arg).astype(np.float64)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('NLS.mat')\n",
    "\n",
    "# Following is the code to plot the data u vs x and t. u is 256*100\n",
    "# matrix. Use first 75 columns for training and 25 for testing :)\n",
    "\n",
    "# Access the variables stored in the .mat file\n",
    "# The variable names in the .mat file become keys in the loaded dictionary\n",
    "x = mat_data['x']\n",
    "t = mat_data['tt']\n",
    "u1 = mat_data['uu']\n",
    "\n",
    "# Use the loaded variables as needed\n",
    "print(x.shape)\n",
    "print(t.shape)\n",
    "print(u.shape)\n",
    "\n",
    "X, T = np.meshgrid(x, t)\n",
    "# Define custom color levels\n",
    "c_levels = np.linspace(np.min(u1), np.max(u1), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure()\n",
    "plt.figure(figsize=(15, 5))\n",
    "plt.contourf(T, X, u1.T, levels=c_levels, cmap='coolwarm')\n",
    "plt.xlabel('t')\n",
    "plt.ylabel('x')\n",
    "plt.title('Schrondinger-Equation')\n",
    "plt.colorbar()  # Add a colorbar for the contour levels\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "38d5287d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 1, 256])\n",
      "torch.Size([1, 40, 256])\n"
     ]
    }
   ],
   "source": [
    "print(test_tensor.shape)\n",
    "prediction_tensor = torch.zeros(1, 40, 256).float()\n",
    "print(prediction_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "62122ca0",
   "metadata": {},
   "outputs": [],
   "source": [
    "with torch.no_grad():\n",
    "    hidden_pred = torch.zeros(1, batch_size, hidden_size)\n",
    "    cell_pred = torch.zeros(1, batch_size, hidden_size)\n",
    "    prediction, _ = lstm(test_tensor, (hidden_pred, cell_pred))\n",
    "    prediction = prediction.view(1, 1, 256).float()\n",
    "    prediction_tensor[:, 0, :] = prediction\n",
    "    for i in range(19):\n",
    "        hidden_pred = torch.zeros(1, batch_size, hidden_size)\n",
    "        cell_pred = torch.zeros(1, batch_size, hidden_size)\n",
    "        prediction, _ = lstm(test_tensor, (hidden_pred, cell_pred))\n",
    "        prediction = prediction.view(1, 1, 256).float()\n",
    "        prediction_tensor[:, i+1, :] = prediction"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d92ce73a",
   "metadata": {},
   "source": [
    "### errors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "17bfc232",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(201, 256)\n"
     ]
    }
   ],
   "source": [
    "# true solution\n",
    "h_true = np.abs(u1)\n",
    "h_true = h_true.T\n",
    "print(h_true.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "8220399b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(40, 256)\n"
     ]
    }
   ],
   "source": [
    "# exact\n",
    "u_test_full = h_true[161:201, :]\n",
    "print(u_test_full.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "08f43ef7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 40, 256])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "k1 = (prediction_tensor - u_test_full)**2\n",
    "u_test_full_tensor = torch.tensor(u_test_full**2)\n",
    "prediction_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "a99fde35",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Error Test:  0.5022126934070535 %\n"
     ]
    }
   ],
   "source": [
    "# Compute the relative L2 error norm (generalization error)\n",
    "relative_error_test = torch.mean(k1)/ torch.mean(u_test_full_tensor)\n",
    "\n",
    "print(\"Relative Error Test: \", relative_error_test.item(), \"%\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "7806eca5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.1532, dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "R_abs = torch.max(prediction_tensor-u_test_full)\n",
    "print(R_abs)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2f50e7fd",
   "metadata": {},
   "source": [
    "### explained variance score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "bb94ac5a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Explained Variance Score: 0.2721566391123723\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "\n",
    "a = prediction_tensor\n",
    "b = u_test_full\n",
    "# Assuming 'a' is your predicted values (model's predictions) and 'b' is the true values (ground truth)\n",
    "# Make sure 'a' and 'b' are PyTorch tensors\n",
    "b = torch.tensor(b)\n",
    "# Calculate the mean of 'b'\n",
    "mean_b = torch.mean(b)\n",
    "\n",
    "# Calculate the Explained Variance Score\n",
    "numerator = torch.var(b - a)  # Variance of the differences between 'b' and 'a'\n",
    "denominator = torch.var(b)    # Variance of 'b'\n",
    "evs = 1 - numerator / denominator\n",
    "\n",
    "print(\"Explained Variance Score:\", evs.item())\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8bc77cb2",
   "metadata": {},
   "source": [
    "### mean absolute error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "d423eb42",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.3268, dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "R_mean = torch.mean(torch.abs(prediction_tensor - u_test_full))\n",
    "print(R_mean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "c0828980",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(201, 256)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction_tensor = torch.squeeze(prediction_tensor)\n",
    "h = np.abs(u)\n",
    "h.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "b4e2a530",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(256, 1)\n",
      "(256, 1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "# # Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = lem(test_tensor)\n",
    "\n",
    "final_time_output = prediction_tensor[-38, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = h[-38, :].reshape(-1, 1)\n",
    "print(final_out.shape)\n",
    "print(final_true.shape)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x.T, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x.T, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${|u(x, t)|}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 1.28}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-5, 0, 5])\n",
    "ax.set_yticks([0, 2, 4])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "\n",
    "# Increase font size for x and y axis numbers\n",
    "ax.tick_params(axis='both', which='major', labelsize=24)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('LSTM_1.28_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "6ceab7fb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(256, 1)\n",
      "(256, 1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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5s4Nm5putBHceGPhgbzddmFnYwWyxOnVK4zEueQSaNWqsK954w044IAwTfvZZytaXqqppRyhVlvKH34YbrTccUf8dj+rqquDCy+E886D1q0rV5/UnrFj4Sc/KX49jO23h5//PAzJLKSfOiu0SlyJaimUly2DRx+F228Pi8oU23c3cGAI8e22q0x9UvsWLQpj3W+4obAbyI316gUnnwxHHw29e1ekvEQplEuU9VBesSKsf3v//fDgg6XNpmrTJrSMzzkn7GAs0lxjxsAJJ8CECcV/rRkMGxZuSB98cFjwKosUyiXKYih//XVYBOiJJ8JjxozS32u//eCqq0IrWaScli8PQ+cuvjis01yKtm1hl13CnpDDhxc23TstFMolSnsou4clEl99NTxeeSXcgGtuuTvsEMJ4p53KU6dIlDlzwnj4666Db75p3nttvHH4N7vDDmGaf//+4T5IGimUS5SWUHYPm1J+8AG88064Q/3mm+F55szyXWfQILj88rDXXi0PR5L0+eqrsHP2734XdrMph65dYejQMAa64dG/f9iqqtr/vms6lM1sbeDXwH5Ab2Au8Dpwvbs3a+mTSofykiWhu2HmzPDc+PHll2GUxAcfhOfmtiLi7LADnHFG2Gev0KFLIpXw6adwzTVw552Vm+W3xhphydHevcOi/euuGz7u3Rt69AhhvsYaYfnZSrW0azaUzWxz4Fmge+6leUBnwthrB8519yub8f4FhfJll8G0aSFkly4Nj4aP8722eHHoR6tk0Dalfftwo+TUU7XEpqTP/Plwzz1htt8771Snhrq6sFHDGmtAhw7hRnfDo337lR+3arXy0bp1mFh13XXx791UKOPumXsAHYBphPAdDwzKvd4FuCb3ej2wZzOu4eGvJ95WW7mHTob0P4Yyxn/LyT6LNcILQ4Y0+ecryq23FlfQ8ceX9/rHH1/c9W+9tbzXHzKkuOuPHVve6xf7D6Kcxo4t7toF/NtbscL96afdjz7afbXVqv/zU8ije/em/6oaZQv5HintCm/SCcAGwAJgf3efDODu89z9LOBhwIArKl1I27aVvkLzDGEcl/Nr3mcjxrINp3ATXZlT7bJEmlRXF7aU+sMfwkii++8P3WwdO1a7smjl6ALM6tyskbnn+9w93+KS/wkcBAwxs37uXrFfgtI2frc7M9mL0ezNE+zJk6yFtnuQ7OvQ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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "# # Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = lem(test_tensor)\n",
    "\n",
    "\n",
    "final_time_output = prediction_tensor[-3, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = h[-3, :].reshape(-1, 1)\n",
    "print(final_out.shape)\n",
    "print(final_true.shape)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x.T, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x.T, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${|u(x, t)|}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 1.5}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-5, 0, 5])\n",
    "ax.set_yticks([0, 2, 4])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "\n",
    "# Increase font size for x and y axis numbers\n",
    "ax.tick_params(axis='both', which='major', labelsize=24)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('LSTM_1.5_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "50cd5acb",
   "metadata": {},
   "outputs": [],
   "source": [
    "conc_u = torch.squeeze(input_tensor)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "6bdb507f",
   "metadata": {},
   "outputs": [],
   "source": [
    "concatenated_tensor = torch.cat((conc_u, prediction_tensor), dim=0)\n",
    "\n",
    "t1 = np.linspace(0, 1.5707 , 200)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "43a4873c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FixedLocator\n",
    "\n",
    "# Assuming you have defined concatenated_tensor as a PyTorch tensor\n",
    "# concatenated_tensor = torch.cat((tensor1, tensor2), dim=0)\n",
    "\n",
    "# Convert concatenated_tensor to a NumPy array\n",
    "concatenated_array = concatenated_tensor.numpy()\n",
    "\n",
    "# Define custom color levels\n",
    "x = np.linspace(-5, 5, concatenated_array.shape[1])  # Replace 0 and 1 with your actual x range\n",
    "t = np.linspace(0, 1.57, concatenated_array.shape[0])  # Replace 0 and 1 with your actual t range\n",
    "X, T = np.meshgrid(x, t1)\n",
    "\n",
    "# Define custom color levels using the minimum and maximum from the NumPy array\n",
    "c_levels = np.linspace(np.min(concatenated_array), np.max(concatenated_array), 400)\n",
    "\n",
    "# Plot the contour with interpolated data\n",
    "plt.figure(figsize=(20, 5))\n",
    "plt.pcolormesh(T, X, concatenated_array, shading='auto', cmap='twilight')\n",
    "\n",
    "# Set the fontweight for axis labels to regular (not bold)\n",
    "plt.xlabel(\"$t$\", fontsize=26)\n",
    "plt.ylabel(\"$x$\", fontsize=26)\n",
    "plt.title(\"$|u(x, t)|$\", fontsize=26)\n",
    "\n",
    "# Set tick labels fontweight to regular (not bold) and increase font size\n",
    "plt.tick_params(axis='both', which='major', labelsize=20, width=3, length=10)\n",
    "\n",
    "# Set the fontweight for tick labels to regular (not bold)\n",
    "for tick in plt.gca().get_xticklabels() + plt.gca().get_yticklabels():\n",
    "    tick.set_weight('normal')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 5\n",
    "num_ticks = 5\n",
    "x_ticks = np.linspace(np.min(T), np.max(T), num_ticks)\n",
    "y_ticks = np.linspace(np.min(X), np.max(X), num_ticks)\n",
    "\n",
    "plt.gca().xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "plt.gca().yaxis.set_major_locator(FixedLocator(y_ticks))\n",
    "\n",
    "cbar1 = plt.colorbar()\n",
    "# Set the number of ticks for the color bar with uniformly distributed numbers\n",
    "num_ticks = 5\n",
    "c_ticks = np.linspace(np.min(concatenated_array), np.max(concatenated_array), num_ticks)\n",
    "cbar1.set_ticks(c_ticks)\n",
    "\n",
    "# Set the fontweight and fontsize for color bar tick labels\n",
    "for t in cbar1.ax.get_yticklabels():\n",
    "    t.set_weight('normal')\n",
    "    t.set_fontsize(26)  # Increase the font size for color bar tick labels\n",
    "\n",
    "# Increase the size of numbers on axis and color bar\n",
    "plt.xticks(fontsize=26)\n",
    "plt.yticks(fontsize=26)\n",
    "\n",
    "# Increase the tick size and width of the color bar\n",
    "cbar1.ax.tick_params(axis='both', which='major', labelsize=30, width=3,  length=10)\n",
    "\n",
    "# Add a dotted line at t = 0.8\n",
    "plt.axvline(x=1.26449, color='black', linestyle='dotted', linewidth=5)\n",
    "\n",
    "#plt.savefig('Contour_LEM_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "plt.savefig('contour_LSTM_20.jpeg', dpi=500, bbox_inches=\"tight\")\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dac4415c",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "pytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
